/*
 * Copyright (c) 2016-2017, Fuzhou Rockchip Electronics Co., Ltd
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * date: 2021-06-15
 */
	.arch armv8-a+nosimd
	.file	"rk_zftl_spl_arm_v8.S"
	.section	.text.flash_mem_cmp8,"ax",@progbits
	.align	2
	.type	flash_mem_cmp8, %function
flash_mem_cmp8:
	mov	x3, 0
.L2:
	mov	w4, w3
	cmp	w3, w2
	bcc	.L4
	mov	w0, 0
	ret
.L4:
	ldrb	w5, [x0, x3]
	add	x3, x3, 1
	add	x6, x1, x3
	ldrb	w6, [x6, -1]
	cmp	w6, w5
	beq	.L2
	add	w0, w4, 1
	ret
	.size	flash_mem_cmp8, .-flash_mem_cmp8
	.section	.text.slc_phy_page_address_calc,"ax",@progbits
	.align	2
	.type	slc_phy_page_address_calc, %function
slc_phy_page_address_calc:
	adrp	x1, .LANCHOR0
	adrp	x2, .LANCHOR1
	ldrb	w1, [x1, #:lo12:.LANCHOR0]
	cbz	w1, .L7
	ldrb	w1, [x2, #:lo12:.LANCHOR1]
	cbz	w1, .L8
.L7:
	adrp	x1, .LANCHOR2
	ldrb	w2, [x2, #:lo12:.LANCHOR1]
	ldrh	w3, [x1, #:lo12:.LANCHOR2]
	udiv	w1, w0, w3
	mul	w1, w1, w3
	sub	w0, w0, w1
	cbz	w2, .L9
	add	w0, w1, w0, lsl 1
	ret
.L9:
	adrp	x2, .LANCHOR3
	add	x2, x2, :lo12:.LANCHOR3
	ldrh	w0, [x2, w0, uxtw 1]
	add	w0, w0, w1
.L8:
	ret
	.size	slc_phy_page_address_calc, .-slc_phy_page_address_calc
	.section	.text._list_remove_node,"ax",@progbits
	.align	2
	.type	_list_remove_node, %function
_list_remove_node:
	stp	x29, x30, [sp, -64]!
	and	w1, w1, 65535
	mov	w3, 6
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR4
	stp	x19, x20, [sp, 16]
	umull	x20, w1, w3
	stp	x23, x24, [sp, 48]
	mov	w1, 65535
	ldr	x24, [x21, #:lo12:.LANCHOR4]
	add	x19, x24, x20
	ldrh	w4, [x24, x20]
	ldrh	w3, [x19, 2]
	cmp	w4, w1
	ldr	x1, [x0]
	bne	.L17
	cmp	w3, w4
	bne	.L17
	cmp	x19, x1
	bne	.L16
.L17:
	mov	x22, x0
	mov	x23, x2
	mov	w0, 65535
	cmp	w3, w0
	bne	.L19
	cmp	x19, x1
	beq	.L19
	adrp	x1, .LANCHOR5
	adrp	x0, .LC0
	mov	w2, 202
	add	x1, x1, :lo12:.LANCHOR5
	add	x0, x0, :lo12:.LC0
	bl	printf
.L19:
	ldr	x0, [x22]
	ldrh	w3, [x24, x20]
	cmp	x19, x0
	mov	w0, 65535
	bne	.L20
	cmp	w3, w0
	bne	.L21
	str	xzr, [x22]
.L22:
	mov	w0, -1
	strh	w0, [x24, x20]
	strh	w0, [x19, 2]
	ldrh	w0, [x23]
	sub	w0, w0, #1
	strh	w0, [x23]
.L16:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L21:
	ldr	x0, [x21, #:lo12:.LANCHOR4]
	mov	w1, 6
	umaddl	x3, w3, w1, x0
	mov	w0, -1
	str	x3, [x22]
	strh	w0, [x3, 2]
	b	.L22
.L20:
	cmp	w3, w0
	ldrh	w0, [x19, 2]
	bne	.L23
	cmp	w0, w3
	beq	.L22
	mov	w1, 6
	mov	w2, -1
	umull	x0, w0, w1
	ldr	x1, [x21, #:lo12:.LANCHOR4]
	strh	w2, [x1, x0]
	b	.L22
.L23:
	ldr	x1, [x21, #:lo12:.LANCHOR4]
	mov	w2, 6
	umaddl	x4, w3, w2, x1
	strh	w0, [x4, 2]
	ldrh	w0, [x19, 2]
	umull	x0, w0, w2
	strh	w3, [x1, x0]
	b	.L22
	.size	_list_remove_node, .-_list_remove_node
	.section	.text.hynix_set_rr_para,"ax",@progbits
	.align	2
	.type	hynix_set_rr_para, %function
hynix_set_rr_para:
	stp	x29, x30, [sp, -64]!
	adrp	x2, .LANCHOR6
	and	w1, w1, 255
	adrp	x3, .LANCHOR7
	add	x29, sp, 0
	ldr	x2, [x2, #:lo12:.LANCHOR6]
	and	w0, w0, 255
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	add	x21, x2, 112
	str	x23, [sp, 48]
	add	x23, x2, 128
	ldr	x19, [x3, #:lo12:.LANCHOR7]
	ldrb	w22, [x2, 113]
	ldrb	w2, [x2, 112]
	cmp	w2, 8
	mov	x2, 32
	umaddl	x1, w1, w22, x2
	beq	.L26
	mov	w2, 160
	umaddl	x1, w2, w0, x1
.L26:
	ubfiz	x0, x0, 8, 8
	add	x21, x21, x1
	add	x19, x19, x0
	mov	x20, 0
	mov	w0, 54
	str	w0, [x19, 2056]
.L28:
	cmp	w22, w20, uxtb
	bhi	.L29
	ldp	x21, x22, [sp, 32]
	mov	w0, 22
	ldr	x23, [sp, 48]
	str	w0, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 64
	ret
.L29:
	ldrb	w0, [x23, x20]
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	ldrsb	w0, [x21, x20]
	add	x20, x20, 1
	str	w0, [x19, 2048]
	b	.L28
	.size	hynix_set_rr_para, .-hynix_set_rr_para
	.section	.text._insert_free_list,"ax",@progbits
	.align	2
	.type	_insert_free_list, %function
_insert_free_list:
	adrp	x3, .LANCHOR8
	and	w1, w1, 65535
	ldrh	w3, [x3, #:lo12:.LANCHOR8]
	cmp	w3, w1
	bls	.L31
	ldrh	w3, [x2]
	mov	w8, 6
	ldr	x7, [x0]
	add	w3, w3, 1
	strh	w3, [x2]
	adrp	x2, .LANCHOR4
	umull	x12, w1, w8
	ldr	x5, [x2, #:lo12:.LANCHOR4]
	mov	w2, -1
	add	x6, x5, x12
	strh	w2, [x6, 2]
	strh	w2, [x5, x12]
	cbnz	x7, .L33
.L38:
	str	x6, [x0]
	ret
.L33:
	adrp	x2, .LANCHOR9
	adrp	x3, .LANCHOR10
	mov	w10, w8
	mov	w15, 65535
	ldr	x11, [x2, #:lo12:.LANCHOR9]
	ubfiz	x2, x1, 2, 16
	ldrh	w14, [x3, #:lo12:.LANCHOR10]
	mov	x3, -6148914691236517206
	movk	x3, 0xaaab, lsl 0
	ldr	w4, [x11, x2]
	ldrh	w2, [x11, x2]
	ubfx	x4, x4, 11, 8
	and	w2, w2, 2047
	madd	w4, w14, w4, w2
	sub	x2, x7, x5
	asr	x2, x2, 1
	and	w4, w4, 65535
	mul	x2, x2, x3
	mov	x3, x7
	and	w2, w2, 65535
.L36:
	ubfiz	x13, x2, 2, 16
	ldr	w8, [x11, x13]
	ldrh	w13, [x11, x13]
	ubfx	x8, x8, 11, 8
	and	w13, w13, 2047
	madd	w8, w14, w8, w13
	cmp	w4, w8, uxth
	bls	.L34
	ldrh	w8, [x3]
	cmp	w8, w15
	bne	.L35
	strh	w2, [x6, 2]
	strh	w1, [x3]
	ret
.L35:
	umaddl	x3, w8, w10, x5
	mov	w2, w8
	b	.L36
.L34:
	ldrh	w4, [x3, 2]
	cmp	x7, x3
	strh	w4, [x6, 2]
	strh	w2, [x5, x12]
	bne	.L37
	strh	w1, [x7, 2]
	b	.L38
.L37:
	ldrh	w0, [x3, 2]
	mov	w2, 6
	umull	x0, w0, w2
	strh	w1, [x5, x0]
	strh	w1, [x3, 2]
.L31:
	ret
	.size	_insert_free_list, .-_insert_free_list
	.section	.text._insert_data_list,"ax",@progbits
	.align	2
	.type	_insert_data_list, %function
_insert_data_list:
	adrp	x3, .LANCHOR8
	and	w1, w1, 65535
	ldrh	w4, [x3, #:lo12:.LANCHOR8]
	cmp	w4, w1
	bls	.L61
	mov	x5, x3
	ldrh	w3, [x2]
	mov	w13, 6
	ldr	x12, [x0]
	add	w3, w3, 1
	strh	w3, [x2]
	adrp	x2, .LANCHOR4
	umull	x13, w1, w13
	ldr	x10, [x2, #:lo12:.LANCHOR4]
	mov	w2, -1
	add	x11, x10, x13
	strh	w2, [x11, 2]
	strh	w2, [x10, x13]
	cbnz	x12, .L42
	str	x11, [x0]
	ret
.L42:
	stp	x29, x30, [sp, -32]!
	adrp	x2, .LANCHOR11
	uxtw	x3, w1
	adrp	x6, .LANCHOR10
	add	x29, sp, 0
	ldr	x15, [x2, #:lo12:.LANCHOR11]
	adrp	x2, .LANCHOR9
	ldrh	w4, [x11, 4]
	ldr	x14, [x2, #:lo12:.LANCHOR9]
	stp	x19, x20, [sp, 16]
	ldrh	w8, [x15, x3, lsl 1]
	lsl	x3, x3, 2
	ldrh	w16, [x6, #:lo12:.LANCHOR10]
	ldr	w2, [x14, x3]
	mul	w8, w8, w4
	ldrh	w3, [x14, x3]
	ubfx	x2, x2, 11, 8
	and	w3, w3, 2047
	cbz	w8, .L43
	madd	w2, w16, w2, w3
	add	w8, w8, w2, uxth
.L43:
	sub	x2, x12, x10
	mov	x3, -6148914691236517206
	asr	x2, x2, 1
	movk	x3, 0xaaab, lsl 0
	cmp	w4, 0
	ldrh	w19, [x5, #:lo12:.LANCHOR8]
	csinv	w8, w8, wzr, ne
	mov	x7, x12
	mul	x2, x2, x3
	mov	w4, 0
	mov	w20, 65535
	mov	w30, 6
	and	w2, w2, 65535
.L49:
	add	w4, w4, 1
	and	w4, w4, 65535
	cmp	w4, w19
	bhi	.L39
	cmp	w1, w2
	beq	.L39
	uxtw	x6, w2
	ldrh	w17, [x7, 4]
	ldrh	w3, [x15, x6, lsl 1]
	lsl	x6, x6, 2
	ldr	w5, [x14, x6]
	mul	w3, w3, w17
	ldrh	w6, [x14, x6]
	ubfx	x5, x5, 11, 8
	and	w6, w6, 2047
	cbz	w3, .L46
	madd	w5, w16, w5, w6
	add	w3, w3, w5, uxth
.L46:
	cbz	w17, .L47
	cmp	w8, w3
	bls	.L47
	ldrh	w3, [x7]
	cmp	w3, w20
	bne	.L48
	strh	w2, [x11, 2]
	strh	w1, [x7]
.L39:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L48:
	umaddl	x7, w3, w30, x10
	mov	w2, w3
	b	.L49
.L47:
	ldrh	w3, [x7, 2]
	cmp	x12, x7
	strh	w3, [x11, 2]
	strh	w2, [x10, x13]
	bne	.L50
	strh	w1, [x12, 2]
	str	x11, [x0]
	b	.L39
.L50:
	ldrh	w0, [x7, 2]
	mov	w2, 6
	umull	x0, w0, w2
	strh	w1, [x10, x0]
	strh	w1, [x7, 2]
	b	.L39
.L61:
	ret
	.size	_insert_data_list, .-_insert_data_list
	.section	.text._list_update_data_list,"ax",@progbits
	.align	2
	.type	_list_update_data_list, %function
_list_update_data_list:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w1, 65535
	adrp	x1, .LANCHOR12
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	ldr	x1, [x1, #:lo12:.LANCHOR12]
	ldrh	w3, [x1, 16]
	str	x25, [sp, 64]
	cmp	w3, w19
	beq	.L63
	ldrh	w3, [x1, 48]
	cmp	w3, w19
	beq	.L63
	ldrh	w1, [x1, 80]
	cmp	w1, w19
	beq	.L63
	adrp	x1, .LANCHOR4
	mov	w22, 6
	ldr	x3, [x0]
	mov	x25, x1
	umull	x22, w19, w22
	ldr	x24, [x1, #:lo12:.LANCHOR4]
	add	x23, x24, x22
	cmp	x23, x3
	beq	.L63
	mov	x20, x0
	ldrh	w0, [x23, 2]
	mov	w1, 65535
	mov	x21, x2
	cmp	w0, w1
	bne	.L67
	ldrh	w1, [x24, x22]
	cmp	w1, w0
	bne	.L67
	adrp	x1, .LANCHOR13
	adrp	x0, .LC0
	mov	w2, 273
	add	x1, x1, :lo12:.LANCHOR13
	add	x0, x0, :lo12:.LC0
	bl	printf
.L67:
	ldrh	w1, [x23, 2]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L68
	ldrh	w0, [x24, x22]
	cmp	w0, w1
	beq	.L63
.L68:
	adrp	x0, .LANCHOR11
	ubfiz	x2, x19, 1, 16
	mov	x5, -6148914691236517206
	mov	w4, -1
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	movk	x5, 0xaaab, lsl 0
	ldrh	w3, [x0, x2]
	ldrh	w2, [x23, 4]
	cmp	w2, 0
	mul	w3, w3, w2
	mov	w2, 6
	umull	x1, w1, w2
	csel	w3, w3, w4, ne
	asr	x2, x1, 1
	mul	x2, x2, x5
	ldrh	w0, [x0, x2, lsl 1]
	ldr	x2, [x25, #:lo12:.LANCHOR4]
	add	x1, x2, x1
	ldrh	w1, [x1, 4]
	cmp	w1, 0
	mul	w0, w0, w1
	csel	w0, w0, w4, ne
	cmp	w3, w0
	bcs	.L63
	mov	x2, x21
	mov	w1, w19
	mov	x0, x20
	bl	_list_remove_node
	mov	x2, x21
	mov	w1, w19
	mov	x0, x20
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	b	_insert_data_list
.L63:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	_list_update_data_list, .-_list_update_data_list
	.section	.text.nandc_de_cs.constprop.31,"ax",@progbits
	.align	2
	.type	nandc_de_cs.constprop.31, %function
nandc_de_cs.constprop.31:
	adrp	x0, .LANCHOR7
	ldr	x1, [x0, #:lo12:.LANCHOR7]
	ldr	w0, [x1]
	and	w0, w0, -256
	and	w0, w0, -131073
	str	w0, [x1]
	ret
	.size	nandc_de_cs.constprop.31, .-nandc_de_cs.constprop.31
	.section	.text.flash_read_status,"ax",@progbits
	.align	2
	.global	flash_read_status
	.type	flash_read_status, %function
flash_read_status:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 112
	str	w0, [x19, 8]
	mov	x0, 1
	bl	udelay
	ldr	w0, [x19]
	ldr	x19, [sp, 16]
	and	w0, w0, 255
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_read_status, .-flash_read_status
	.section	.text.toshiba_set_rr_para,"ax",@progbits
	.align	2
	.global	toshiba_set_rr_para
	.type	toshiba_set_rr_para, %function
toshiba_set_rr_para:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	str	x27, [sp, 80]
	and	w27, w1, 255
	add	w2, w27, 1
	stp	x21, x22, [sp, 32]
	mov	x21, x0
	mov	w0, 5
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR14
	umull	x2, w2, w0
	stp	x23, x24, [sp, 48]
	adrp	x0, .LANCHOR15
	add	x20, x20, :lo12:.LANCHOR14
	add	x24, x0, :lo12:.LANCHOR15
	stp	x25, x26, [sp, 64]
	adrp	x23, .LANCHOR18
	adrp	x25, .LANCHOR16
	adrp	x26, .LANCHOR17
	add	x23, x23, :lo12:.LANCHOR18
	add	x25, x25, :lo12:.LANCHOR16
	add	x26, x26, :lo12:.LANCHOR17
	add	x20, x20, x2
	add	x24, x24, x2
	mov	x22, x0
	mov	x19, 0
.L78:
	ldrb	w0, [x23]
	cmp	w0, w19
	bhi	.L82
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L82:
	mov	w0, 85
	str	w0, [x21, 8]
	add	x0, x22, :lo12:.LANCHOR15
	ldrsb	w0, [x19, x0]
	str	w0, [x21, 4]
	mov	x0, 1
	bl	udelay
	ldrb	w0, [x25]
	cmp	w0, 34
	bne	.L79
	ldrsb	w0, [x24, x19]
.L84:
	add	x19, x19, 1
	str	w0, [x21]
	b	.L78
.L79:
	cmp	w0, 35
	bne	.L81
	ldrsb	w0, [x20, x19]
	b	.L84
.L81:
	ldrsb	w0, [x26, w27, sxtw]
	b	.L84
	.size	toshiba_set_rr_para, .-toshiba_set_rr_para
	.section	.text.hynix_reconfig_rr_para,"ax",@progbits
	.align	2
	.global	hynix_reconfig_rr_para
	.type	hynix_reconfig_rr_para, %function
hynix_reconfig_rr_para:
	adrp	x1, .LANCHOR16
	ldrb	w1, [x1, #:lo12:.LANCHOR16]
	sub	w1, w1, #1
	and	w1, w1, 255
	cmp	w1, 7
	bhi	.L91
	stp	x29, x30, [sp, -32]!
	and	w0, w0, 255
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR6
	sxtw	x19, w0
	ldr	x1, [x20, #:lo12:.LANCHOR6]
	add	x1, x1, x19
	ldrb	w1, [x1, 120]
	cbz	w1, .L85
	mov	w1, 0
	bl	hynix_set_rr_para
	ldr	x0, [x20, #:lo12:.LANCHOR6]
	add	x0, x0, x19
	strb	wzr, [x0, 120]
.L85:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L91:
	ret
	.size	hynix_reconfig_rr_para, .-hynix_reconfig_rr_para
	.section	.text.nand_flash_print_info,"ax",@progbits
	.align	2
	.global	nand_flash_print_info
	.type	nand_flash_print_info, %function
nand_flash_print_info:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR19
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L95
	adrp	x1, .LANCHOR20
	adrp	x0, .LC1
	add	x1, x1, :lo12:.LANCHOR20
	add	x0, x0, :lo12:.LC1
	bl	printf
.L95:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L96
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w6, [x0, 6]
	ldrb	w5, [x0, 5]
	ldrb	w4, [x0, 4]
	ldrb	w3, [x0, 3]
	ldrb	w2, [x0, 2]
	ldrb	w1, [x0, 1]
	adrp	x0, .LC2
	add	x0, x0, :lo12:.LC2
	bl	printf
.L96:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L97
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 8]
	adrp	x0, .LC3
	add	x0, x0, :lo12:.LC3
	bl	printf
.L97:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L98
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 9]
	adrp	x0, .LC4
	add	x0, x0, :lo12:.LC4
	bl	printf
.L98:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L99
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 10]
	adrp	x0, .LC5
	add	x0, x0, :lo12:.LC5
	bl	printf
.L99:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L100
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 12]
	adrp	x0, .LC6
	add	x0, x0, :lo12:.LC6
	bl	printf
.L100:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L101
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 13]
	adrp	x0, .LC7
	add	x0, x0, :lo12:.LC7
	bl	printf
.L101:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L102
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 14]
	adrp	x0, .LC8
	add	x0, x0, :lo12:.LC8
	bl	printf
.L102:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L103
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 23]
	adrp	x0, .LC9
	add	x0, x0, :lo12:.LC9
	bl	printf
.L103:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L104
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 18]
	adrp	x0, .LC10
	add	x0, x0, :lo12:.LC10
	bl	printf
.L104:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L105
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 19]
	adrp	x0, .LC11
	add	x0, x0, :lo12:.LC11
	bl	printf
.L105:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L106
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 20]
	adrp	x0, .LC12
	add	x0, x0, :lo12:.LC12
	bl	printf
.L106:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L107
	adrp	x0, .LANCHOR22
	ldrb	w1, [x0, #:lo12:.LANCHOR22]
	adrp	x0, .LC13
	add	x0, x0, :lo12:.LC13
	bl	printf
.L107:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L108
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 22]
	adrp	x0, .LC14
	add	x0, x0, :lo12:.LC14
	bl	printf
.L108:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L109
	adrp	x0, .LANCHOR23
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	adrp	x0, .LC15
	add	x0, x0, :lo12:.LC15
	bl	printf
.L109:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L110
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 16]
	adrp	x0, .LC16
	add	x0, x0, :lo12:.LC16
	and	w1, w1, 1
	bl	printf
.L110:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L111
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC17
	add	x0, x0, :lo12:.LC17
	ubfx	x1, x1, 1, 1
	bl	printf
.L111:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L112
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC18
	add	x0, x0, :lo12:.LC18
	ubfx	x1, x1, 2, 1
	bl	printf
.L112:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L113
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC19
	add	x0, x0, :lo12:.LC19
	ubfx	x1, x1, 3, 1
	bl	printf
.L113:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L114
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC20
	add	x0, x0, :lo12:.LC20
	ubfx	x1, x1, 4, 1
	bl	printf
.L114:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L115
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC21
	add	x0, x0, :lo12:.LC21
	ubfx	x1, x1, 5, 1
	bl	printf
.L115:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L116
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC22
	add	x0, x0, :lo12:.LC22
	ubfx	x1, x1, 6, 1
	bl	printf
.L116:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L117
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC23
	add	x0, x0, :lo12:.LC23
	ubfx	x1, x1, 7, 1
	bl	printf
.L117:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L118
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 17]
	adrp	x0, .LC24
	add	x0, x0, :lo12:.LC24
	and	w1, w1, 1
	bl	printf
.L118:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L119
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC25
	add	x0, x0, :lo12:.LC25
	ubfx	x1, x1, 9, 1
	bl	printf
.L119:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L120
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrh	w1, [x0, 16]
	adrp	x0, .LC26
	add	x0, x0, :lo12:.LC26
	ubfx	x1, x1, 10, 1
	bl	printf
.L120:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L121
	adrp	x0, .LANCHOR24
	ldrb	w2, [x0, #:lo12:.LANCHOR24]
	adrp	x0, .LANCHOR0
	ldrb	w1, [x0, #:lo12:.LANCHOR0]
	adrp	x0, .LC27
	add	x0, x0, :lo12:.LC27
	bl	printf
.L121:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L122
	adrp	x0, .LANCHOR25
	add	x0, x0, :lo12:.LANCHOR25
	ldrb	w2, [x0, 11]
	ldrb	w1, [x0, 10]
	adrp	x0, .LC28
	add	x0, x0, :lo12:.LC28
	bl	printf
.L122:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L123
	adrp	x0, .LANCHOR25
	add	x0, x0, :lo12:.LANCHOR25
	ldrb	w2, [x0, 9]
	ldrb	w1, [x0, 8]
	adrp	x0, .LC29
	add	x0, x0, :lo12:.LC29
	bl	printf
.L123:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L94
	adrp	x0, .LANCHOR26
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ldrb	w1, [x0, #:lo12:.LANCHOR26]
	adrp	x0, .LC30
	add	x0, x0, :lo12:.LC30
	b	printf
.L94:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	nand_flash_print_info, .-nand_flash_print_info
	.section	.text.timer_delay_ns,"ax",@progbits
	.align	2
	.global	timer_delay_ns
	.type	timer_delay_ns, %function
timer_delay_ns:
	uxtw	x0, w0
	mov	x1, 1000
	add	x0, x0, 999
	udiv	x0, x0, x1
	b	udelay
	.size	timer_delay_ns, .-timer_delay_ns
	.section	.text.nandc_set_ddr_para,"ax",@progbits
	.align	2
	.global	nandc_set_ddr_para
	.type	nandc_set_ddr_para, %function
nandc_set_ddr_para:
	adrp	x1, .LANCHOR27
	and	w0, w0, 255
	adrp	x2, .LANCHOR7
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	ldr	x2, [x2, #:lo12:.LANCHOR7]
	cmp	w1, 9
	lsl	w1, w0, 16
	lsl	w0, w0, 8
	orr	w1, w1, w0
	orr	w1, w1, 3
	bne	.L215
	str	w1, [x2, 80]
	ret
.L215:
	str	w1, [x2, 304]
	ret
	.size	nandc_set_ddr_para, .-nandc_set_ddr_para
	.section	.text.nandc_get_ddr_para,"ax",@progbits
	.align	2
	.global	nandc_get_ddr_para
	.type	nandc_get_ddr_para, %function
nandc_get_ddr_para:
	adrp	x0, .LANCHOR27
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	cmp	w0, 9
	adrp	x0, .LANCHOR7
	ldr	x0, [x0, #:lo12:.LANCHOR7]
	bne	.L218
	ldr	w0, [x0, 80]
.L220:
	ubfx	x0, x0, 8, 8
	ret
.L218:
	ldr	w0, [x0, 304]
	b	.L220
	.size	nandc_get_ddr_para, .-nandc_get_ddr_para
	.section	.text.nandc_set_if_mode,"ax",@progbits
	.align	2
	.global	nandc_set_if_mode
	.type	nandc_set_if_mode, %function
nandc_set_if_mode:
	adrp	x1, .LANCHOR7
	and	w0, w0, 255
	tst	w0, 6
	ldr	x2, [x1, #:lo12:.LANCHOR7]
	ldr	w1, [x2]
	beq	.L222
	tst	x0, 4
	orr	w1, w1, 24576
	adrp	x0, .LANCHOR27
	and	w1, w1, -32769
	orr	w1, w1, 196608
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	orr	w3, w1, 32768
	csel	w1, w3, w1, ne
	cmp	w0, 9
	mov	w0, 4099
	movk	w0, 0x10, lsl 16
	bne	.L224
	mov	w3, 8321
	str	w3, [x2, 8]
	str	w0, [x2, 80]
	mov	w0, 38
	str	w0, [x2, 84]
	mov	w0, 39
	str	w0, [x2, 84]
.L225:
	str	w1, [x2]
	ret
.L224:
	mov	w3, 8322
	str	w3, [x2, 344]
	str	w0, [x2, 304]
	mov	w0, 38
	str	w0, [x2, 308]
	mov	w0, 39
	str	w0, [x2, 308]
	b	.L225
.L222:
	and	w1, w1, -8193
	b	.L225
	.size	nandc_set_if_mode, .-nandc_set_if_mode
	.section	.text.nandc_cs,"ax",@progbits
	.align	2
	.global	nandc_cs
	.type	nandc_cs, %function
nandc_cs:
	adrp	x1, .LANCHOR7
	mov	w2, 1
	lsl	w0, w2, w0
	ldr	x3, [x1, #:lo12:.LANCHOR7]
	ldr	w1, [x3]
	bfi	w1, w0, 0, 8
	str	w1, [x3]
	ret
	.size	nandc_cs, .-nandc_cs
	.section	.text.flash_wait_device_ready_raw,"ax",@progbits
	.align	2
	.global	flash_wait_device_ready_raw
	.type	flash_wait_device_ready_raw, %function
flash_wait_device_ready_raw:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	adrp	x0, .LANCHOR23
	stp	x25, x26, [sp, 64]
	stp	x21, x22, [sp, 32]
	mov	w20, w1
	ldrb	w0, [x0, #:lo12:.LANCHOR23]
	mov	w26, w2
	stp	x23, x24, [sp, 48]
	str	x27, [sp, 80]
	cmp	w0, w19
	bhi	.L230
	adrp	x1, .LANCHOR28
	adrp	x0, .LC0
	mov	w2, 812
	add	x1, x1, :lo12:.LANCHOR28
	add	x0, x0, :lo12:.LC0
	bl	printf
.L230:
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	lsr	w23, w20, 8
	lsr	w24, w20, 16
	lsr	w25, w20, 24
	adrp	x21, .LANCHOR30
	ldrb	w22, [x0, w19, sxtw]
	adrp	x0, .LANCHOR7
	and	w20, w20, 255
	add	x21, x21, :lo12:.LANCHOR30
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	mov	w27, 120
	ubfiz	x0, x22, 8, 8
	add	x19, x19, x0
.L236:
	mov	w0, w22
	bl	nandc_cs
	str	w27, [x19, 2056]
	str	w20, [x19, 2052]
	ldrb	w0, [x21]
	str	w23, [x19, 2052]
	str	w24, [x19, 2052]
	cbz	w0, .L231
	str	w25, [x19, 2052]
.L231:
	mov	x0, 1
	bl	udelay
	ldr	w2, [x19, 2048]
	and	w2, w2, 255
	bl	nandc_de_cs.constprop.31
	bics	wzr, w26, w2
	bne	.L236
	cmp	w2, 255
	beq	.L236
	mov	w0, w2
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
	.size	flash_wait_device_ready_raw, .-flash_wait_device_ready_raw
	.section	.text.flash_wait_device_ready,"ax",@progbits
	.align	2
	.global	flash_wait_device_ready
	.type	flash_wait_device_ready, %function
flash_wait_device_ready:
	mov	w2, w1
	adrp	x1, .LANCHOR31
	mov	w5, 24
	mov	w4, 1
	ldrb	w6, [x1, #:lo12:.LANCHOR31]
	tst	x0, 50331648
	sub	w5, w5, w6
	lsl	w3, w4, w5
	sub	w3, w3, #1
	lsl	w4, w4, w6
	sub	w4, w4, #1
	asr	w5, w0, w5
	and	w4, w4, w5
	and	w1, w3, w0
	and	w4, w4, 255
	bne	.L241
	adrp	x0, .LANCHOR0
	adrp	x5, .LANCHOR1
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L242
	ldrb	w0, [x5, #:lo12:.LANCHOR1]
	cbz	w0, .L241
.L242:
	adrp	x0, .LANCHOR2
	ldrh	w3, [x0, #:lo12:.LANCHOR2]
	udiv	w0, w1, w3
	mul	w0, w0, w3
	sub	w3, w1, w0
	ldrb	w1, [x5, #:lo12:.LANCHOR1]
	cbz	w1, .L243
	add	w1, w0, w3, lsl 1
.L241:
	mov	w0, w4
	b	flash_wait_device_ready_raw
.L243:
	adrp	x5, .LANCHOR3
	add	x5, x5, :lo12:.LANCHOR3
	ldrh	w3, [x5, w3, uxtw 1]
	add	w1, w3, w0
	b	.L241
	.size	flash_wait_device_ready, .-flash_wait_device_ready
	.section	.text.nandc_de_cs,"ax",@progbits
	.align	2
	.global	nandc_de_cs
	.type	nandc_de_cs, %function
nandc_de_cs:
	adrp	x0, .LANCHOR7
	ldr	x1, [x0, #:lo12:.LANCHOR7]
	ldr	w0, [x1]
	and	w0, w0, -256
	and	w0, w0, -131073
	str	w0, [x1]
	ret
	.size	nandc_de_cs, .-nandc_de_cs
	.section	.text.nandc_wait_flash_ready_no_delay,"ax",@progbits
	.align	2
	.global	nandc_wait_flash_ready_no_delay
	.type	nandc_wait_flash_ready_no_delay, %function
nandc_wait_flash_ready_no_delay:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, 34464
	movk	w19, 0x1, lsl 16
	adrp	x20, .LANCHOR7
.L253:
	ldr	x0, [x20, #:lo12:.LANCHOR7]
	ldr	w0, [x0]
	str	w0, [x29, 40]
	ldr	w0, [x29, 40]
	tbnz	x0, 9, .L254
	mov	x0, 1
	bl	udelay
	subs	w19, w19, #1
	bne	.L253
	mov	w0, -1
.L251:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L254:
	mov	w0, 0
	b	.L251
	.size	nandc_wait_flash_ready_no_delay, .-nandc_wait_flash_ready_no_delay
	.section	.text.zftl_flash_enter_slc_mode,"ax",@progbits
	.align	2
	.global	zftl_flash_enter_slc_mode
	.type	zftl_flash_enter_slc_mode, %function
zftl_flash_enter_slc_mode:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	x19, x0, 255
	adrp	x0, .LANCHOR0
	stp	x21, x22, [sp, 32]
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L257
	adrp	x1, .LANCHOR7
	cmp	w0, 1
	ldr	x20, [x1, #:lo12:.LANCHOR7]
	bne	.L260
	adrp	x0, .LANCHOR32+29
	ldrb	w0, [x0, #:lo12:.LANCHOR32+29]
	cbz	w0, .L257
.L276:
	add	x19, x19, 8
	add	x19, x20, x19, lsl 8
	str	w0, [x19, 8]
.L257:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L260:
	cmp	w0, 2
	bne	.L262
	adrp	x0, .LANCHOR33
	add	x0, x0, :lo12:.LANCHOR33
	ldrb	w1, [x0, x19]
	cbz	w1, .L257
	adrp	x21, .LANCHOR32
	add	x21, x21, :lo12:.LANCHOR32
	strb	wzr, [x0, x19]
	ldrb	w0, [x21, 29]
	cbz	w0, .L257
	bl	nandc_wait_flash_ready_no_delay
	ldrb	w0, [x21, 29]
	b	.L276
.L262:
	cmp	w0, 3
	bne	.L257
	adrp	x21, .LANCHOR33
	sxtw	x22, w19
	add	x21, x21, :lo12:.LANCHOR33
	ldrb	w0, [x21, x22]
	cbz	w0, .L257
	ubfiz	x19, x19, 8, 8
	bl	nandc_wait_flash_ready_no_delay
	add	x19, x20, x19
	mov	w0, 239
	strb	wzr, [x21, x22]
	str	w0, [x19, 2056]
	mov	w0, 145
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	str	wzr, [x19, 2048]
	mov	w0, 1
	str	w0, [x19, 2048]
	str	wzr, [x19, 2048]
	mov	x0, 1
	str	wzr, [x19, 2048]
	bl	udelay
	bl	nandc_wait_flash_ready_no_delay
	mov	w0, 218
	ldp	x21, x22, [sp, 32]
	str	w0, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	mov	x0, 1
	ldp	x29, x30, [sp], 48
	b	udelay
	.size	zftl_flash_enter_slc_mode, .-zftl_flash_enter_slc_mode
	.section	.text.zftl_flash_exit_slc_mode,"ax",@progbits
	.align	2
	.global	zftl_flash_exit_slc_mode
	.type	zftl_flash_exit_slc_mode, %function
zftl_flash_exit_slc_mode:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	x19, x0, 255
	adrp	x0, .LANCHOR0
	stp	x21, x22, [sp, 32]
	str	x23, [sp, 48]
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L277
	adrp	x1, .LANCHOR7
	cmp	w0, 1
	ldr	x20, [x1, #:lo12:.LANCHOR7]
	bne	.L280
	adrp	x0, .LANCHOR32+30
	ldrb	w0, [x0, #:lo12:.LANCHOR32+30]
	cbz	w0, .L277
.L298:
	add	x19, x19, 8
	add	x19, x20, x19, lsl 8
	str	w0, [x19, 8]
.L277:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L280:
	cmp	w0, 2
	bne	.L282
	adrp	x0, .LANCHOR33
	add	x0, x0, :lo12:.LANCHOR33
	ldrb	w1, [x0, x19]
	cbnz	w1, .L277
	adrp	x21, .LANCHOR32
	add	x21, x21, :lo12:.LANCHOR32
	mov	w2, 4
	ldrb	w1, [x21, 12]
	cmp	w1, 2
	csel	w1, w1, w2, eq
	strb	w1, [x0, x19]
	ldrb	w0, [x21, 30]
	cbz	w0, .L277
	bl	nandc_wait_flash_ready_no_delay
	ldrb	w0, [x21, 30]
	b	.L298
.L282:
	cmp	w0, 3
	bne	.L277
	adrp	x21, .LANCHOR33
	sxtw	x23, w19
	add	x21, x21, :lo12:.LANCHOR33
	ldrb	w0, [x21, x23]
	cbnz	w0, .L277
	adrp	x22, .LANCHOR32
	add	x22, x22, :lo12:.LANCHOR32
	bl	nandc_wait_flash_ready_no_delay
	ubfiz	x19, x19, 8, 8
	add	x19, x20, x19
	mov	w1, 4
	ldrb	w0, [x22, 12]
	cmp	w0, 2
	csel	w0, w0, w1, eq
	strb	w0, [x21, x23]
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 145
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	ldrb	w0, [x22, 7]
	cmp	w0, 9
	mov	w0, 1
	bne	.L285
	str	w0, [x19, 2048]
.L286:
	str	w0, [x19, 2048]
	mov	x0, 1
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	udelay
	bl	nandc_wait_flash_ready_no_delay
	ldr	x23, [sp, 48]
	ldp	x21, x22, [sp, 32]
	mov	w0, 223
	str	w0, [x19, 2056]
	mov	x0, 1
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 64
	b	udelay
.L285:
	ldrb	w1, [x21, x23]
	str	w1, [x19, 2048]
	b	.L286
	.size	zftl_flash_exit_slc_mode, .-zftl_flash_exit_slc_mode
	.section	.text.flash_start_page_read,"ax",@progbits
	.align	2
	.global	flash_start_page_read
	.type	flash_start_page_read, %function
flash_start_page_read:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR31
	stp	x19, x20, [sp, 16]
	str	x23, [sp, 48]
	mov	w19, 24
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	w20, 1
	mov	w22, w1
	sub	w23, w19, w0
	lsl	w20, w20, w0
	sub	w20, w20, #1
	lsr	w0, w1, w23
	and	w20, w20, w0
	adrp	x0, .LANCHOR23
	and	w20, w20, 255
	mov	x19, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	cmp	w1, w20
	bhi	.L300
	adrp	x1, .LANCHOR34
	adrp	x0, .LC0
	mov	w2, 1013
	add	x1, x1, :lo12:.LANCHOR34
	add	x0, x0, :lo12:.LC0
	bl	printf
.L300:
	ldrb	w0, [x19, #:lo12:.LANCHOR23]
	cmp	w0, w20
	bls	.L299
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	mov	w19, 1
	ubfx	x4, x22, 24, 2
	lsl	w19, w19, w23
	sub	w19, w19, #1
	and	w19, w19, w22
	ldrb	w22, [x0, w20, sxtw]
	adrp	x0, .LANCHOR7
	adrp	x23, .LANCHOR21
	ldr	x20, [x0, #:lo12:.LANCHOR7]
	mov	w0, w22
	bl	nandc_cs
	cbnz	w4, .L302
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
	adrp	x0, .LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L303
	mov	w0, w22
	bl	zftl_flash_enter_slc_mode
.L303:
	ldr	x0, [x23, #:lo12:.LANCHOR21]
	ldrb	w1, [x0, 7]
	cmp	w1, 1
	bne	.L305
	ldrb	w0, [x0, 12]
	cmp	w0, 2
	bne	.L305
	sxtw	x0, w22
	mov	w1, 38
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w1, [x0, 8]
.L305:
	ubfiz	x0, x22, 8, 8
	and	w1, w19, 255
	add	x0, x20, x0
	str	wzr, [x0, 2056]
	str	wzr, [x0, 2052]
	str	wzr, [x0, 2052]
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	adrp	x1, .LANCHOR30
	ldrb	w1, [x1, #:lo12:.LANCHOR30]
	cbz	w1, .L306
	lsr	w19, w19, 24
	str	w19, [x0, 2052]
.L306:
	str	w21, [x0, 2056]
.L299:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L302:
	ldr	x0, [x23, #:lo12:.LANCHOR21]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L304
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L304
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L304
	sxtw	x0, w22
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w4, [x0, 8]
	b	.L303
.L304:
	mov	w0, w22
	bl	zftl_flash_exit_slc_mode
	b	.L303
	.size	flash_start_page_read, .-flash_start_page_read
	.section	.text.nandc_wait_flash_ready,"ax",@progbits
	.align	2
	.global	nandc_wait_flash_ready
	.type	nandc_wait_flash_ready, %function
nandc_wait_flash_ready:
	stp	x29, x30, [sp, -48]!
	mov	x0, 1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, 34464
	movk	w19, 0x1, lsl 16
	adrp	x20, .LANCHOR7
	bl	udelay
.L316:
	ldr	x0, [x20, #:lo12:.LANCHOR7]
	ldr	w0, [x0]
	str	w0, [x29, 40]
	ldr	w0, [x29, 40]
	tbnz	x0, 9, .L317
	mov	x0, 1
	bl	udelay
	subs	w19, w19, #1
	bne	.L316
	mov	w0, -1
.L314:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L317:
	mov	w0, 0
	b	.L314
	.size	nandc_wait_flash_ready, .-nandc_wait_flash_ready
	.section	.text.sandisk_set_rr_para,"ax",@progbits
	.align	2
	.global	sandisk_set_rr_para
	.type	sandisk_set_rr_para, %function
sandisk_set_rr_para:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	mov	w0, 239
	and	w19, w1, 255
	str	w0, [x20, 8]
	mov	w0, 17
	str	w0, [x20, 4]
	mov	x0, 1
	bl	udelay
	adrp	x0, .LANCHOR18
	add	w1, w19, 1
	adrp	x2, .LANCHOR14
	add	x2, x2, :lo12:.LANCHOR14
	ldrb	w3, [x0, #:lo12:.LANCHOR18]
	adrp	x0, .LANCHOR16
	ldrb	w4, [x0, #:lo12:.LANCHOR16]
	mov	w0, 5
	umull	x1, w1, w0
	adrp	x0, .LANCHOR15
	add	x0, x0, :lo12:.LANCHOR15
	add	x2, x2, x1
	add	x1, x0, x1
	mov	x0, 0
.L321:
	cmp	w3, w0
	bhi	.L324
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	b	nandc_wait_flash_ready
.L324:
	cmp	w4, 67
	bne	.L322
	ldrsb	w5, [x1, x0]
.L326:
	add	x0, x0, 1
	str	w5, [x20]
	b	.L321
.L322:
	ldrsb	w5, [x2, x0]
	b	.L326
	.size	sandisk_set_rr_para, .-sandisk_set_rr_para
	.section	.text.toshiba_3d_set_tlc_rr_para,"ax",@progbits
	.align	2
	.global	toshiba_3d_set_tlc_rr_para
	.type	toshiba_3d_set_tlc_rr_para, %function
toshiba_3d_set_tlc_rr_para:
	stp	x29, x30, [sp, -48]!
	and	x2, x1, 255
	mov	x1, 7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w21, 213
	madd	x1, x2, x1, x1
	mov	w0, -119
	str	w21, [x19, 8]
	str	wzr, [x19, 4]
	str	w0, [x19, 4]
	adrp	x0, .LANCHOR37
	add	x0, x0, :lo12:.LANCHOR37
	add	x20, x0, x1
	ldrsb	w0, [x0, x1]
	str	w0, [x19]
	ldrsb	w0, [x20, 1]
	str	w0, [x19]
	ldrsb	w0, [x20, 2]
	str	w0, [x19]
	ldrsb	w0, [x20, 3]
	str	w0, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	str	wzr, [x19, 4]
	mov	w0, -118
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 4]
	ldr	x21, [sp, 32]
	str	w0, [x19]
	ldrsb	w0, [x20, 5]
	str	w0, [x19]
	ldrsb	w0, [x20, 6]
	str	w0, [x19]
	str	wzr, [x19]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	nandc_wait_flash_ready
	.size	toshiba_3d_set_tlc_rr_para, .-toshiba_3d_set_tlc_rr_para
	.section	.text.toshiba_3d_set_slc_rr_para,"ax",@progbits
	.align	2
	.global	toshiba_3d_set_slc_rr_para
	.type	toshiba_3d_set_slc_rr_para, %function
toshiba_3d_set_slc_rr_para:
	mov	w2, 213
	str	w2, [x0, 8]
	str	wzr, [x0, 4]
	mov	w2, -117
	str	w2, [x0, 4]
	adrp	x2, .LANCHOR38
	add	x2, x2, :lo12:.LANCHOR38
	add	x1, x2, x1, uxtb
	ldrsb	w1, [x1, 1]
	str	w1, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	b	nandc_wait_flash_ready
	.size	toshiba_3d_set_slc_rr_para, .-toshiba_3d_set_slc_rr_para
	.section	.text.toshiba_tlc_set_rr_para,"ax",@progbits
	.align	2
	.global	toshiba_tlc_set_rr_para
	.type	toshiba_tlc_set_rr_para, %function
toshiba_tlc_set_rr_para:
	stp	x29, x30, [sp, -48]!
	uxtw	x1, w1
	add	x29, sp, 0
	str	x21, [sp, 32]
	mov	w21, 239
	stp	x19, x20, [sp, 16]
	cbz	w2, .L331
	mov	x19, x0
	mov	x2, 7
	mov	w0, 18
	mul	x1, x1, x2
	str	w21, [x19, 8]
	str	w0, [x19, 4]
	adrp	x0, .LANCHOR39
	add	x0, x0, :lo12:.LANCHOR39
	add	x20, x0, x1
	ldrb	w0, [x0, x1]
	str	w0, [x19]
	ldrb	w0, [x20, 1]
	str	w0, [x19]
	ldrb	w0, [x20, 2]
	str	w0, [x19]
	ldrb	w0, [x20, 3]
	str	w0, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 19
	str	w0, [x19, 4]
	ldrb	w0, [x20, 4]
	str	w0, [x19]
	ldrb	w0, [x20, 5]
	str	w0, [x19]
	ldrb	w0, [x20, 6]
	str	w0, [x19]
	str	wzr, [x19]
.L332:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	b	nandc_wait_flash_ready
.L331:
	str	w21, [x0, 8]
	mov	w2, 20
	str	w2, [x0, 4]
	adrp	x2, .LANCHOR40
	add	x2, x2, :lo12:.LANCHOR40
	ldrb	w1, [x2, x1]
	str	w1, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	b	.L332
	.size	toshiba_tlc_set_rr_para, .-toshiba_tlc_set_rr_para
	.section	.text.ymtc_3d_set_tlc_rr_para,"ax",@progbits
	.align	2
	.global	ymtc_3d_set_tlc_rr_para
	.type	ymtc_3d_set_tlc_rr_para, %function
ymtc_3d_set_tlc_rr_para:
	stp	x29, x30, [sp, -48]!
	and	x1, x1, 255
	mov	x2, 7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mul	x1, x1, x2
	mov	w21, 239
	mov	w0, 160
	str	w21, [x19, 8]
	str	w0, [x19, 4]
	adrp	x0, .LANCHOR41
	add	x0, x0, :lo12:.LANCHOR41
	add	x20, x0, x1
	ldrsb	w0, [x0, x1]
	str	w0, [x19]
	ldrsb	w0, [x20, 4]
	str	w0, [x19]
	str	wzr, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 161
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 1]
	str	w0, [x19]
	ldrsb	w0, [x20, 3]
	str	w0, [x19]
	ldrsb	w0, [x20, 5]
	str	w0, [x19]
	str	wzr, [x19]
	bl	nandc_wait_flash_ready
	str	w21, [x19, 8]
	mov	w0, 162
	str	w0, [x19, 4]
	ldrsb	w0, [x20, 2]
	ldr	x21, [sp, 32]
	str	w0, [x19]
	ldrsb	w0, [x20, 6]
	str	w0, [x19]
	str	wzr, [x19]
	str	wzr, [x19]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	nandc_wait_flash_ready
	.size	ymtc_3d_set_tlc_rr_para, .-ymtc_3d_set_tlc_rr_para
	.section	.text.ymtc_3d_set_slc_rr_para,"ax",@progbits
	.align	2
	.global	ymtc_3d_set_slc_rr_para
	.type	ymtc_3d_set_slc_rr_para, %function
ymtc_3d_set_slc_rr_para:
	mov	w2, 239
	str	w2, [x0, 8]
	mov	w2, 163
	and	x1, x1, 255
	str	w2, [x0, 4]
	adrp	x2, .LANCHOR42
	add	x2, x2, :lo12:.LANCHOR42
	ldrsb	w1, [x2, x1]
	str	w1, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	str	wzr, [x0]
	b	nandc_wait_flash_ready
	.size	ymtc_3d_set_slc_rr_para, .-ymtc_3d_set_slc_rr_para
	.section	.text.flash_erase_duplane_block,"ax",@progbits
	.align	2
	.global	flash_erase_duplane_block
	.type	flash_erase_duplane_block, %function
flash_erase_duplane_block:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	adrp	x0, .LANCHOR23
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	and	w24, w1, 255
	str	x25, [sp, 64]
	mov	w21, w2
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	mov	w20, w3
	mov	x19, x0
	cmp	w1, w22
	bhi	.L338
	adrp	x1, .LANCHOR43
	adrp	x0, .LC0
	mov	w2, 695
	add	x1, x1, :lo12:.LANCHOR43
	add	x0, x0, :lo12:.LC0
	bl	printf
.L338:
	ldrb	w0, [x19, #:lo12:.LANCHOR23]
	cmp	w0, w22
	bls	.L347
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w22, [x0, w22, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x25, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR19
	and	x19, x22, 255
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	add	x23, x19, 8
	add	x23, x25, x23, lsl 8
	tbz	x0, 4, .L340
	adrp	x0, .LC31
	mov	w3, w20
	mov	w2, w21
	mov	w1, w22
	add	x0, x0, :lo12:.LC31
	bl	printf
.L340:
	bl	nandc_wait_flash_ready
	mov	w0, w22
	bl	nandc_cs
	mov	w0, w22
	cbnz	w24, .L341
	bl	zftl_flash_enter_slc_mode
.L342:
	add	x19, x25, x19, lsl 8
	mov	w0, 96
	str	w0, [x19, 2056]
	and	w0, w21, 255
	str	w0, [x19, 2052]
	lsr	w0, w21, 8
	str	w0, [x19, 2052]
	lsr	w0, w21, 16
	str	w0, [x19, 2052]
	adrp	x0, .LANCHOR30
	mov	x24, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR30]
	cbz	w1, .L343
	lsr	w0, w21, 24
	str	w0, [x19, 2052]
.L343:
	adrp	x0, .LANCHOR44
	ldrb	w0, [x0, #:lo12:.LANCHOR44]
	cbnz	w0, .L348
	mov	w0, 208
	str	w0, [x19, 2056]
	mov	w22, 5
	bl	nandc_wait_flash_ready
	mov	x0, x23
	bl	flash_read_status
	and	w22, w0, w22
.L344:
	mov	w0, 96
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	str	w0, [x19, 2052]
	ldrb	w0, [x24, #:lo12:.LANCHOR30]
	cbz	w0, .L345
	lsr	w20, w20, 24
	str	w20, [x19, 2052]
.L345:
	mov	w0, 208
	str	w0, [x19, 2056]
	mov	w19, 5
	bl	nandc_wait_flash_ready
	mov	x0, x23
	bl	flash_read_status
	mov	w2, w0
	bl	nandc_de_cs.constprop.31
	and	w19, w2, w19
	orr	w19, w19, w22
	cbz	w19, .L346
	adrp	x0, .LC32
	mov	w1, w21
	add	x0, x0, :lo12:.LC32
	bl	printf
.L346:
	mov	w0, w19
.L337:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L341:
	bl	zftl_flash_exit_slc_mode
	b	.L342
.L348:
	mov	w22, 0
	b	.L344
.L347:
	mov	w0, -1
	b	.L337
	.size	flash_erase_duplane_block, .-flash_erase_duplane_block
	.section	.text.flash_erase_block_en,"ax",@progbits
	.align	2
	.global	flash_erase_block_en
	.type	flash_erase_block_en, %function
flash_erase_block_en:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	adrp	x0, .LANCHOR31
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	stp	x23, x24, [sp, 48]
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	and	w24, w1, 255
	stp	x25, x26, [sp, 64]
	mov	w23, w2
	sub	w0, w19, w0
	mov	w19, 1
	lsl	w19, w19, w0
	adrp	x0, .LANCHOR23
	sub	w19, w19, #1
	mov	x20, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	and	w19, w19, w2
	cmp	w1, w22
	bhi	.L363
	adrp	x1, .LANCHOR45
	adrp	x0, .LC0
	mov	w2, 757
	add	x1, x1, :lo12:.LANCHOR45
	add	x0, x0, :lo12:.LC0
	bl	printf
.L363:
	ldrb	w0, [x20, #:lo12:.LANCHOR23]
	cmp	w0, w22
	bls	.L370
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w21, [x0, w22, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x26, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR19
	and	x20, x21, 255
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	add	x25, x20, 8
	add	x25, x26, x25, lsl 8
	tbz	x0, 4, .L365
	adrp	x0, .LC33
	mov	w3, w24
	mov	w2, w23
	mov	w1, w21
	add	x0, x0, :lo12:.LC33
	bl	printf
.L365:
	bl	nandc_wait_flash_ready
	mov	w0, w21
	bl	nandc_cs
	mov	w0, w21
	cbnz	w24, .L366
	bl	zftl_flash_enter_slc_mode
.L367:
	add	x0, x26, x20, lsl 8
	mov	w1, 96
	str	w1, [x0, 2056]
	and	w1, w19, 255
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	adrp	x1, .LANCHOR30
	ldrb	w1, [x1, #:lo12:.LANCHOR30]
	cbz	w1, .L368
	lsr	w19, w19, 24
	str	w19, [x0, 2052]
.L368:
	mov	w1, 208
	str	w1, [x0, 2056]
	bl	nandc_wait_flash_ready
	mov	x0, x25
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.31
	mov	w0, 5
	ands	w3, w3, w0
	beq	.L369
	adrp	x0, .LANCHOR2
	mov	w1, w22
	ldrh	w2, [x0, #:lo12:.LANCHOR2]
	adrp	x0, .LC34
	add	x0, x0, :lo12:.LC34
	udiv	w2, w23, w2
	bl	printf
	mov	w3, -1
.L369:
	mov	w0, w3
.L362:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L366:
	bl	zftl_flash_exit_slc_mode
	b	.L367
.L370:
	mov	w0, -1
	b	.L362
	.size	flash_erase_block_en, .-flash_erase_block_en
	.section	.text.flash_erase_block,"ax",@progbits
	.align	2
	.global	flash_erase_block
	.type	flash_erase_block, %function
flash_erase_block:
	mov	w2, w1
	mov	w1, 0
	b	flash_erase_block_en
	.size	flash_erase_block, .-flash_erase_block
	.section	.text.flash_erase_all,"ax",@progbits
	.align	2
	.global	flash_erase_all
	.type	flash_erase_all, %function
flash_erase_all:
	stp	x29, x30, [sp, -80]!
	adrp	x0, .LANCHOR32
	add	x0, x0, :lo12:.LANCHOR32
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, 0
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR2
	stp	x21, x22, [sp, 32]
	add	x23, x23, :lo12:.LANCHOR2
	ldrh	w20, [x0, 14]
	adrp	x22, .LANCHOR23
	str	x25, [sp, 64]
	add	x22, x22, :lo12:.LANCHOR23
	adrp	x24, .LANCHOR29
	ldrb	w1, [x0, 13]
	mul	w20, w20, w1
	and	w20, w20, 65535
.L383:
	ldrb	w0, [x22]
	cmp	w0, w19
	bhi	.L386
	ldp	x19, x20, [sp, 16]
	mov	w1, 0
	ldp	x21, x22, [sp, 32]
	adrp	x0, .LC35
	ldp	x23, x24, [sp, 48]
	add	x0, x0, :lo12:.LC35
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	b	printf
.L386:
	add	x0, x24, :lo12:.LANCHOR29
	mov	w21, 0
	ldrb	w25, [x0, w19, sxtw]
.L384:
	cmp	w20, w21, uxth
	bhi	.L385
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L383
.L385:
	ldrh	w1, [x23]
	mov	w0, w25
	mul	w1, w1, w21
	add	w21, w21, 1
	bl	flash_erase_block
	b	.L384
	.size	flash_erase_all, .-flash_erase_all
	.section	.text.flash_start_plane_read,"ax",@progbits
	.align	2
	.global	flash_start_plane_read
	.type	flash_start_plane_read, %function
flash_start_plane_read:
	stp	x29, x30, [sp, -96]!
	adrp	x2, .LANCHOR31
	mov	w3, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ldrb	w19, [x2, #:lo12:.LANCHOR31]
	mov	w2, 1
	stp	x21, x22, [sp, 32]
	ubfx	x22, x0, 24, 2
	sub	w3, w3, w19
	stp	x23, x24, [sp, 48]
	lsl	w19, w2, w19
	sub	w19, w19, #1
	lsl	w20, w2, w3
	sub	w20, w20, #1
	and	w23, w20, w0
	lsr	w3, w0, w3
	adrp	x0, .LANCHOR23
	and	w19, w19, w3
	stp	x25, x26, [sp, 64]
	and	w19, w19, 255
	ldrb	w0, [x0, #:lo12:.LANCHOR23]
	and	w20, w20, w1
	stp	x27, x28, [sp, 80]
	cmp	w0, w19
	bhi	.L389
	adrp	x1, .LANCHOR46
	adrp	x0, .LC0
	mov	w2, 1148
	add	x1, x1, :lo12:.LANCHOR46
	add	x0, x0, :lo12:.LC0
	bl	printf
.L389:
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	adrp	x25, .LANCHOR21
	ldrb	w21, [x0, w19, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x24, [x0, #:lo12:.LANCHOR7]
	mov	w0, w21
	bl	nandc_cs
	cbnz	w22, .L390
	mov	w0, w23
	bl	slc_phy_page_address_calc
	mov	w23, w0
	mov	w0, w20
	bl	slc_phy_page_address_calc
	mov	w20, w0
	adrp	x0, .LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L391
	mov	w0, w21
	bl	zftl_flash_enter_slc_mode
.L391:
	adrp	x0, .LANCHOR25
	add	x1, x0, :lo12:.LANCHOR25
	and	x19, x21, 255
	and	w4, w23, 255
	lsr	w3, w23, 8
	and	w28, w20, 255
	ldrb	w2, [x1, 16]
	lsr	w27, w20, 8
	lsr	w26, w20, 16
	cmp	w2, 1
	lsr	w2, w23, 16
	bne	.L393
	add	x19, x24, x19, lsl 8
	ldrb	w1, [x1, 8]
	str	w1, [x19, 2056]
	adrp	x1, .LANCHOR30
	str	wzr, [x19, 2052]
	mov	x21, x1
	str	wzr, [x19, 2052]
	str	w4, [x19, 2052]
	str	w3, [x19, 2052]
	str	w2, [x19, 2052]
	ldrb	w2, [x1, #:lo12:.LANCHOR30]
	cbz	w2, .L394
	lsr	w23, w23, 24
	str	w23, [x19, 2052]
.L394:
	add	x0, x0, :lo12:.LANCHOR25
	ldrb	w0, [x0, 9]
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	ldr	x0, [x25, #:lo12:.LANCHOR21]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L395
	cbz	w22, .L395
	str	w22, [x19, 2056]
.L395:
	str	wzr, [x19, 2056]
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w28, [x19, 2052]
	ldrb	w0, [x21, #:lo12:.LANCHOR30]
	str	w27, [x19, 2052]
	str	w26, [x19, 2052]
	cbz	w0, .L416
	lsr	w20, w20, 24
	str	w20, [x19, 2052]
.L416:
	ldp	x21, x22, [sp, 32]
	mov	w0, 48
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	str	w0, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 96
	ret
.L390:
	ldr	x0, [x25, #:lo12:.LANCHOR21]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L392
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L392
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L392
	sxtw	x0, w21
	add	x0, x0, 8
	add	x0, x24, x0, lsl 8
	str	w22, [x0, 8]
	b	.L391
.L392:
	mov	w0, w21
	bl	zftl_flash_exit_slc_mode
	b	.L391
.L393:
	ldr	x1, [x25, #:lo12:.LANCHOR21]
	ldrb	w5, [x1, 7]
	cmp	w5, 1
	bne	.L398
	ldrb	w5, [x1, 12]
	cmp	w5, 2
	bne	.L398
	add	x21, x21, 8
	mov	w5, 38
	add	x21, x24, x21, lsl 8
	str	w5, [x21, 8]
.L398:
	add	x5, x0, :lo12:.LANCHOR25
	add	x19, x24, x19, lsl 8
	ldrb	w5, [x5, 8]
	str	w5, [x19, 2056]
	str	w4, [x19, 2052]
	str	w3, [x19, 2052]
	str	w2, [x19, 2052]
	ldrb	w1, [x1, 12]
	cmp	w1, 3
	bne	.L399
	cbz	w22, .L399
	str	w22, [x19, 2056]
.L399:
	add	x0, x0, :lo12:.LANCHOR25
	ldrb	w0, [x0, 9]
	str	w0, [x19, 2056]
	str	w28, [x19, 2052]
	str	w27, [x19, 2052]
	str	w26, [x19, 2052]
	b	.L416
	.size	flash_start_plane_read, .-flash_start_plane_read
	.section	.text.flash_set_interface_mode,"ax",@progbits
	.align	2
	.global	flash_set_interface_mode
	.type	flash_set_interface_mode, %function
flash_set_interface_mode:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR47
	stp	x19, x20, [sp, 16]
	adrp	x21, .LANCHOR19
	stp	x23, x24, [sp, 48]
	adrp	x20, .LANCHOR48
	mov	w23, w0
	add	x22, x22, :lo12:.LANCHOR47
	add	x20, x20, :lo12:.LANCHOR48
	add	x21, x21, :lo12:.LANCHOR19
	str	x25, [sp, 64]
	mov	x25, 0
.L430:
	adrp	x0, .LANCHOR7
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	lsl	x0, x25, 3
	ldrb	w24, [x0, x22]
	cmp	w24, 69
	beq	.L418
	add	w0, w24, 119
	cmp	w24, 44
	and	w1, w0, 255
	cset	w2, eq
	cmp	w1, 18
	bhi	.L431
	mov	x0, 32769
	movk	x0, 0x4, lsl 16
	lsr	x0, x0, x1
	mvn	x0, x0
.L419:
	and	w0, w0, 1
	eor	w0, w0, 1
	orr	w0, w2, w0
	cbz	w0, .L420
.L418:
	ldrb	w1, [x20]
	cmp	w23, 1
	bne	.L421
	tbz	x1, 0, .L420
	ldr	w0, [x21]
	tbz	x0, 12, .L422
	adrp	x0, .LC36
	add	x0, x0, :lo12:.LC36
	bl	printf
.L422:
	add	x0, x19, x25, lsl 8
	mov	w1, 239
	cmp	w24, 44
	str	w1, [x0, 2056]
	mov	w1, 137
	ccmp	w24, w1, 4, ne
	mov	w1, 1
	bne	.L423
.L454:
	str	w1, [x0, 2052]
	mov	w1, 5
.L453:
	str	w1, [x0, 2048]
.L428:
	str	wzr, [x0, 2048]
	str	wzr, [x0, 2048]
	str	wzr, [x0, 2048]
.L420:
	add	x25, x25, 1
	cmp	x25, 4
	bne	.L430
	bl	nandc_wait_flash_ready
	ldr	x25, [sp, 64]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L431:
	mov	x0, 1
	b	.L419
.L423:
	cmp	w24, 155
	beq	.L454
	mov	w2, 128
	str	w2, [x0, 2052]
	b	.L453
.L421:
	tbz	x1, 2, .L420
	ldr	w0, [x21]
	tbz	x0, 12, .L426
	adrp	x0, .LC37
	add	x0, x0, :lo12:.LC37
	bl	printf
.L426:
	add	x0, x19, x25, lsl 8
	mov	w1, 239
	cmp	w24, 44
	str	w1, [x0, 2056]
	mov	w1, 137
	ccmp	w24, w1, 4, ne
	bne	.L427
	mov	w1, 1
	str	w1, [x0, 2052]
	mov	w1, 35
	b	.L453
.L427:
	cmp	w24, 155
	bne	.L429
	mov	w1, 1
	str	w1, [x0, 2052]
	mov	w1, 37
	b	.L453
.L429:
	mov	w1, 128
	str	w1, [x0, 2052]
	str	wzr, [x0, 2048]
	b	.L428
	.size	flash_set_interface_mode, .-flash_set_interface_mode
	.section	.text.mt_auto_read_calibration_config,"ax",@progbits
	.align	2
	.type	mt_auto_read_calibration_config, %function
mt_auto_read_calibration_config:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	and	w19, w0, 255
	bl	nandc_wait_flash_ready
	adrp	x1, .LANCHOR7
	ubfiz	x0, x19, 8, 8
	ldr	x19, [x1, #:lo12:.LANCHOR7]
	add	x19, x19, x0
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 150
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	str	w20, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	mt_auto_read_calibration_config, .-mt_auto_read_calibration_config
	.section	.text.flash_reset,"ax",@progbits
	.align	2
	.global	flash_reset
	.type	flash_reset, %function
flash_reset:
	adrp	x1, .LANCHOR7
	ubfiz	x0, x0, 8, 8
	add	x0, x0, 2048
	ldr	x1, [x1, #:lo12:.LANCHOR7]
	add	x1, x1, x0
	mov	w0, 255
	str	w0, [x1, 8]
	b	nandc_wait_flash_ready
	.size	flash_reset, .-flash_reset
	.section	.text.flash_read_id,"ax",@progbits
	.align	2
	.global	flash_read_id
	.type	flash_read_id, %function
flash_read_id:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	str	x21, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR7
	stp	x19, x20, [sp, 16]
	mov	x19, x1
	ldr	x20, [x0, #:lo12:.LANCHOR7]
	mov	w0, w21
	bl	flash_reset
	mov	w0, w21
	bl	nandc_cs
	ubfiz	x0, x21, 8, 8
	add	x20, x20, x0
	mov	w0, 144
	str	w0, [x20, 2056]
	mov	x0, 1
	str	wzr, [x20, 2052]
	bl	udelay
	ldr	w0, [x20, 2048]
	strb	w0, [x19]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 1]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 2]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 3]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 4]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 5]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 6]
	ldr	w0, [x20, 2048]
	strb	w0, [x19, 7]
	bl	nandc_de_cs.constprop.31
	ldrb	w2, [x19]
	sub	w0, w2, #1
	and	w0, w0, 255
	cmp	w0, 253
	bhi	.L458
	ldrb	w7, [x19, 5]
	add	w1, w21, 1
	ldrb	w6, [x19, 4]
	adrp	x0, .LC38
	ldrb	w5, [x19, 3]
	add	x0, x0, :lo12:.LC38
	ldrb	w4, [x19, 2]
	ldrb	w3, [x19, 1]
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	printf
.L458:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	flash_read_id, .-flash_read_id
	.section	.text.flash_read_spare,"ax",@progbits
	.align	2
	.global	flash_read_spare
	.type	flash_read_spare, %function
flash_read_spare:
	stp	x29, x30, [sp, -32]!
	ubfiz	x0, x0, 8, 8
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x2
	adrp	x2, .LANCHOR32+9
	ldrb	w3, [x2, #:lo12:.LANCHOR32+9]
	adrp	x2, .LANCHOR7
	ldr	x19, [x2, #:lo12:.LANCHOR7]
	lsl	w3, w3, 9
	add	x19, x19, x0
	and	w0, w1, 255
	str	wzr, [x19, 2056]
	str	w3, [x19, 2052]
	lsr	w3, w3, 8
	str	w3, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w1, 8
	str	w0, [x19, 2052]
	lsr	w1, w1, 16
	str	w1, [x19, 2052]
	mov	w0, 48
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	ldr	w0, [x19, 2048]
	strb	w0, [x20]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_read_spare, .-flash_read_spare
	.section	.text.flash_read_otp_data,"ax",@progbits
	.align	2
	.global	flash_read_otp_data
	.type	flash_read_otp_data, %function
flash_read_otp_data:
	stp	x29, x30, [sp, -48]!
	and	w4, w0, 255
	adrp	x0, .LANCHOR7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	mov	w0, w4
	stp	x21, x22, [sp, 32]
	mov	x22, x2
	bl	nandc_cs
	ubfiz	x4, x4, 8, 8
	add	x19, x19, x4
	mov	w0, 239
	mov	w21, 144
	str	w0, [x19, 2056]
	mov	x0, 1
	str	w21, [x19, 2052]
	bl	udelay
	mov	w0, 1
	str	w0, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bl	nandc_wait_flash_ready
	mov	w0, 238
	str	w0, [x19, 2056]
	str	w21, [x19, 2052]
	mov	w1, w20
	adrp	x0, .LC39
	add	x0, x0, :lo12:.LC39
	ldr	w2, [x19, 2048]
	ldr	w3, [x19, 2048]
	ldr	w4, [x19, 2048]
	bl	printf
	bl	nandc_wait_flash_ready
	str	wzr, [x19, 2056]
	str	wzr, [x19, 2052]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w20, w20, 16
	str	w20, [x19, 2052]
	mov	w0, 48
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	mov	x0, 0
.L464:
	ldr	w1, [x19, 2048]
	strb	w1, [x22, x0]
	add	x0, x0, 1
	cmp	x0, 16384
	bne	.L464
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 144
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	ldp	x21, x22, [sp, 32]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	nandc_de_cs.constprop.31
	.size	flash_read_otp_data, .-flash_read_otp_data
	.section	.text.sandisk_prog_test_bad_block,"ax",@progbits
	.align	2
	.global	sandisk_prog_test_bad_block
	.type	sandisk_prog_test_bad_block, %function
sandisk_prog_test_bad_block:
	stp	x29, x30, [sp, -48]!
	and	x2, x0, 255
	mov	x0, x2
	add	x2, x2, 8
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	adrp	x1, .LANCHOR7
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR32
	ldr	x19, [x1, #:lo12:.LANCHOR7]
	add	x1, x20, :lo12:.LANCHOR32
	ldrb	w1, [x1, 29]
	add	x2, x19, x2, lsl 8
	cbz	w1, .L468
.L483:
	ubfiz	x0, x0, 8, 8
	str	w1, [x2, 8]
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w22, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w22, 8
	str	w0, [x19, 2052]
	lsr	w0, w22, 16
	str	w0, [x19, 2052]
	mov	w0, 16
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	mov	w0, 112
	str	w0, [x19, 2056]
	mov	x0, 1
	bl	udelay
	ldr	w2, [x19, 2048]
	cmp	w2, 255
	bne	.L470
	ldr	w2, [x19, 2048]
.L470:
	mov	w0, 5
	ands	w21, w2, w0
	beq	.L471
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L471
	adrp	x0, .LC40
	mov	w1, w22
	add	x0, x0, :lo12:.LC40
	bl	printf
.L471:
	add	x20, x20, :lo12:.LANCHOR32
	ldrb	w0, [x20, 30]
	cbz	w0, .L467
	str	w0, [x19, 2056]
.L467:
	mov	w0, w21
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L468:
	mov	w1, 162
	b	.L483
	.size	sandisk_prog_test_bad_block, .-sandisk_prog_test_bad_block
	.section	.text.nand_flash_exit_boot_rom_slc_mode,"ax",@progbits
	.align	2
	.type	nand_flash_exit_boot_rom_slc_mode, %function
nand_flash_exit_boot_rom_slc_mode:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LANCHOR7
	mov	w1, 137
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR33
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR47
	str	x21, [sp, 32]
	ldrb	w0, [x0, #:lo12:.LANCHOR47]
	cmp	w0, 44
	ccmp	w0, w1, 4, ne
	bne	.L485
	mov	w0, 223
	str	w0, [x19, 2056]
	adrp	x0, .LANCHOR32+12
	mov	w1, 4
	ldrb	w0, [x0, #:lo12:.LANCHOR32+12]
	cmp	w0, 2
	csel	w0, w0, w1, eq
	strb	w0, [x20, #:lo12:.LANCHOR33]
	bl	nandc_wait_flash_ready
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 145
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	ldrb	w0, [x20, #:lo12:.LANCHOR33]
	str	w0, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
.L494:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	b	nandc_wait_flash_ready
.L485:
	cmp	w0, 173
	bne	.L487
	add	x19, x19, 2048
	mov	w0, 190
	str	w0, [x19, 8]
	bl	nandc_wait_flash_ready
	mov	w0, 223
	str	w0, [x19, 8]
	adrp	x0, .LANCHOR32+12
	mov	w1, 4
	ldrb	w0, [x0, #:lo12:.LANCHOR32+12]
	cmp	w0, 2
	csel	w0, w0, w1, eq
	strb	w0, [x20, #:lo12:.LANCHOR33]
	b	.L494
.L487:
	strb	wzr, [x20, #:lo12:.LANCHOR33]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	b	zftl_flash_exit_slc_mode
	.size	nand_flash_exit_boot_rom_slc_mode, .-nand_flash_exit_boot_rom_slc_mode
	.section	.text.nandc_rdy_status,"ax",@progbits
	.align	2
	.global	nandc_rdy_status
	.type	nandc_rdy_status, %function
nandc_rdy_status:
	adrp	x0, .LANCHOR7
	sub	sp, sp, #16
	ldr	x0, [x0, #:lo12:.LANCHOR7]
	ldr	w0, [x0]
	str	w0, [sp, 8]
	ldr	w0, [sp, 8]
	add	sp, sp, 16
	ubfx	x0, x0, 9, 1
	ret
	.size	nandc_rdy_status, .-nandc_rdy_status
	.section	.text.nandc_bch_sel,"ax",@progbits
	.align	2
	.global	nandc_bch_sel
	.type	nandc_bch_sel, %function
nandc_bch_sel:
	sub	sp, sp, #16
	str	wzr, [sp, 8]
	ldr	w1, [sp, 8]
	orr	w1, w1, 1
	str	w1, [sp, 8]
	adrp	x1, .LANCHOR49
	strb	w0, [x1, #:lo12:.LANCHOR49]
	adrp	x1, .LANCHOR27
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	cmp	w1, 9
	adrp	x1, .LANCHOR7
	bne	.L498
	ldr	x1, [x1, #:lo12:.LANCHOR7]
	cmp	w0, 70
	ldr	w2, [sp, 8]
	str	w2, [x1, 16]
	beq	.L504
	cmp	w0, 60
	beq	.L505
	cmp	w0, 40
	cset	w0, eq
	add	w0, w0, 1
.L499:
	str	wzr, [sp]
	ldr	w2, [sp]
	bfi	w2, w0, 25, 3
	str	w2, [sp]
	ldr	w0, [sp]
	orr	w0, w0, 1
	str	w0, [sp]
	ldr	w0, [sp]
	str	w0, [x1, 32]
.L497:
	add	sp, sp, 16
	ret
.L504:
	mov	w0, 0
	b	.L499
.L505:
	mov	w0, 3
	b	.L499
.L498:
	ldr	x2, [x1, #:lo12:.LANCHOR7]
	mov	w3, 16
	ldr	w1, [sp, 8]
	cmp	w0, w3
	str	w1, [x2, 8]
	str	wzr, [sp]
	ldr	w1, [sp]
	bfi	w1, w3, 8, 8
	str	w1, [sp]
	ldr	w1, [sp]
	and	w1, w1, -262145
	str	w1, [sp]
	bne	.L501
.L508:
	ldr	w0, [sp]
	and	w0, w0, -17
	b	.L509
.L501:
	cmp	w0, 24
	bne	.L503
	ldr	w0, [sp]
	orr	w0, w0, 16
.L509:
	str	w0, [sp]
	b	.L502
.L503:
	ldr	w1, [sp]
	cmp	w0, 40
	orr	w1, w1, 262144
	str	w1, [sp]
	ldr	w1, [sp]
	orr	w1, w1, 16
	str	w1, [sp]
	beq	.L508
.L502:
	ldr	w0, [sp]
	orr	w0, w0, 1
	str	w0, [sp]
	ldr	w0, [sp]
	str	w0, [x2, 12]
	b	.L497
	.size	nandc_bch_sel, .-nandc_bch_sel
	.section	.text.zftl_nandc_get_irq_status,"ax",@progbits
	.align	2
	.global	zftl_nandc_get_irq_status
	.type	zftl_nandc_get_irq_status, %function
zftl_nandc_get_irq_status:
	adrp	x1, .LANCHOR27
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	cmp	w1, 9
	bne	.L511
	ldr	w0, [x0, 296]
	ret
.L511:
	ldr	w0, [x0, 372]
	ret
	.size	zftl_nandc_get_irq_status, .-zftl_nandc_get_irq_status
	.section	.text.rk_nandc_flash_ready,"ax",@progbits
	.align	2
	.global	rk_nandc_flash_ready
	.type	rk_nandc_flash_ready, %function
rk_nandc_flash_ready:
	ret
	.size	rk_nandc_flash_ready, .-rk_nandc_flash_ready
	.section	.text.nandc_iqr_wait_flash_ready,"ax",@progbits
	.align	2
	.global	nandc_iqr_wait_flash_ready
	.type	nandc_iqr_wait_flash_ready, %function
nandc_iqr_wait_flash_ready:
	ret
	.size	nandc_iqr_wait_flash_ready, .-nandc_iqr_wait_flash_ready
	.section	.text.rk_nandc_flash_xfer_completed,"ax",@progbits
	.align	2
	.global	rk_nandc_flash_xfer_completed
	.type	rk_nandc_flash_xfer_completed, %function
rk_nandc_flash_xfer_completed:
	ret
	.size	rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
	.section	.text.nandc_xfer_start,"ax",@progbits
	.align	2
	.global	nandc_xfer_start
	.type	nandc_xfer_start, %function
nandc_xfer_start:
	stp	x29, x30, [sp, -80]!
	and	w1, w1, 255
	adrp	x4, .LANCHOR52
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	adrp	x0, .LANCHOR27
	str	x21, [sp, 32]
	and	w6, w20, 1
	adrp	x21, .LANCHOR7
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	cmp	w0, 9
	add	w0, w1, 1
	bne	.L517
	str	wzr, [x29, 56]
	mov	w5, 1
	ubfx	x0, x0, 1, 6
	ldr	w1, [x29, 56]
	bfi	w1, w6, 1, 1
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 8
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	bfi	w1, w5, 5, 2
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 536870912
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	orr	w1, w1, 1024
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	and	w1, w1, -17
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	bfi	w1, w0, 22, 6
	str	w1, [x29, 56]
	ldr	w0, [x29, 56]
	orr	w0, w0, 128
	str	w0, [x29, 56]
	adrp	x0, .LANCHOR50
	ldrb	w0, [x0, #:lo12:.LANCHOR50]
	cbz	w0, .L518
	adrp	x0, .LANCHOR51
	ldrb	w0, [x0, #:lo12:.LANCHOR51]
	cbz	w0, .L518
	ldr	w0, [x29, 56]
	orr	w0, w0, 512
	str	w0, [x29, 56]
.L518:
	ldr	w0, [x29, 56]
	add	x19, x4, :lo12:.LANCHOR52
	add	x1, x2, 63
	and	x1, x1, -64
	ubfx	x0, x0, 22, 6
	stp	x2, x3, [x19, 8]
	ubfiz	x0, x0, 10, 6
	stp	w2, w3, [x19, 24]
	add	x1, x1, x0
	and	x0, x2, -64
	bl	flush_dcache_range
	ldr	x0, [x19, 16]
	add	x1, x0, 63
	and	x0, x0, -64
	and	x1, x1, -64
	add	x1, x1, 64
	bl	flush_dcache_range
	mov	w0, 1
	str	w0, [x19, 32]
	ldr	x0, [x21, #:lo12:.LANCHOR7]
	mov	w2, 16
	ldr	w1, [x19, 24]
	cmp	w20, 0
	str	w1, [x0, 52]
	ldr	w1, [x19, 28]
	str	w1, [x0, 56]
	ldr	w1, [x0, 48]
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 9, 5
	str	w1, [x29, 64]
	mov	w2, 2
	ldr	w1, [x29, 64]
	orr	w1, w1, 448
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 3, 3
	str	w1, [x29, 64]
	cset	w2, eq
	ldr	w1, [x29, 64]
	orr	w1, w1, 4
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 1, 1
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	orr	w1, w1, 1
	str	w1, [x29, 64]
	adrp	x1, .LANCHOR53
	ldrh	w2, [x1, #:lo12:.LANCHOR53]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 16, 11
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	str	w1, [x0, 48]
	ldr	w1, [x29, 56]
	str	w1, [x0, 16]
	ldr	w1, [x29, 56]
	orr	w1, w1, 4
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	str	w1, [x0, 16]
.L516:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 80
	ret
.L517:
	ldr	x5, [x21, #:lo12:.LANCHOR7]
	mov	w7, 16
	ubfx	x0, x0, 1, 6
	ldr	w5, [x5, 12]
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	bfi	w5, w7, 8, 8
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	and	w5, w5, -9
	str	w5, [x29, 72]
	ldr	w5, [x29, 72]
	and	w5, w5, -225
	str	w5, [x29, 72]
	str	wzr, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w6, 1, 1
	str	w5, [x29, 56]
	mov	w6, 1
	ldr	w5, [x29, 56]
	orr	w5, w5, 8
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w6, 5, 2
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	orr	w5, w5, 536870912
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	orr	w5, w5, 1024
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	and	w5, w5, -17
	str	w5, [x29, 56]
	ldr	w5, [x29, 56]
	bfi	w5, w0, 22, 6
	str	w5, [x29, 56]
	cbz	w20, .L520
	adrp	x0, .LANCHOR49
	ubfx	x1, x1, 1, 7
	ldr	x8, [x4, #:lo12:.LANCHOR52]
	add	x1, x3, x1, lsl 2
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	mov	w5, 64
	cmp	w0, 25
	mov	w0, 128
	csel	w5, w5, w0, cc
	mov	w0, 0
.L522:
	add	w7, w5, w0
	cmp	x3, x1
	bne	.L523
.L524:
	add	x19, x4, :lo12:.LANCHOR52
	ldr	x0, [x4, #:lo12:.LANCHOR52]
	add	x1, x2, 63
	and	x1, x1, -64
	stp	x2, x0, [x19, 8]
	stp	w2, w0, [x19, 24]
	ldr	w0, [x29, 56]
	ubfx	x0, x0, 22, 6
	ubfiz	x0, x0, 10, 6
	add	x1, x1, x0
	and	x0, x2, -64
	bl	flush_dcache_range
	ldr	x0, [x19, 16]
	ldr	w1, [x29, 56]
	add	x2, x0, 63
	and	x0, x0, -64
	and	x2, x2, -64
	ubfx	x1, x1, 22, 6
	ubfiz	x1, x1, 7, 6
	add	x1, x2, x1
	bl	flush_dcache_range
	mov	w0, 1
	str	w0, [x19, 32]
	ldr	x0, [x21, #:lo12:.LANCHOR7]
	mov	w2, 16
	ldr	w1, [x19, 24]
	cmp	w20, 0
	str	w1, [x0, 20]
	ldr	w1, [x19, 28]
	str	w1, [x0, 24]
	str	wzr, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 9, 5
	str	w1, [x29, 64]
	mov	w2, 2
	ldr	w1, [x29, 64]
	orr	w1, w1, 448
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 3, 3
	str	w1, [x29, 64]
	cset	w2, eq
	ldr	w1, [x29, 64]
	orr	w1, w1, 4
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	bfi	w1, w2, 1, 1
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	orr	w1, w1, 1
	str	w1, [x29, 64]
	ldr	w1, [x29, 64]
	str	w1, [x0, 16]
	ldr	w1, [x29, 72]
	str	w1, [x0, 12]
	ldr	w1, [x29, 56]
	str	w1, [x0, 8]
	ldr	w1, [x29, 56]
	orr	w1, w1, 4
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	str	w1, [x0, 8]
	b	.L516
.L523:
	ldrh	w10, [x3]
	and	x0, x0, 4294967292
	ldrh	w6, [x3, 2]
	add	x3, x3, 4
	orr	x6, x10, x6, lsl 16
	str	w6, [x8, x0]
	mov	w0, w7
	b	.L522
.L520:
	ldr	x0, [x4, #:lo12:.LANCHOR52]
	str	w6, [x0]
	b	.L524
	.size	nandc_xfer_start, .-nandc_xfer_start
	.section	.text.nandc_set_seed,"ax",@progbits
	.align	2
	.global	nandc_set_seed
	.type	nandc_set_seed, %function
nandc_set_seed:
	and	x0, x0, 127
	adrp	x1, .LANCHOR54
	add	x1, x1, :lo12:.LANCHOR54
	ldrh	w0, [x1, x0, lsl 1]
	adrp	x1, .LANCHOR51
	ldrb	w2, [x1, #:lo12:.LANCHOR51]
	orr	w1, w0, -1073741824
	cmp	w2, 0
	csel	w0, w1, w0, ne
	adrp	x1, .LANCHOR27
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	cmp	w1, 9
	adrp	x1, .LANCHOR7
	ldr	x1, [x1, #:lo12:.LANCHOR7]
	bne	.L535
	str	w0, [x1, 520]
	ret
.L535:
	str	w0, [x1, 336]
	ret
	.size	nandc_set_seed, .-nandc_set_seed
	.section	.text.zftl_flash_de_init,"ax",@progbits
	.align	2
	.global	zftl_flash_de_init
	.type	zftl_flash_de_init, %function
zftl_flash_de_init:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	bl	nandc_wait_flash_ready
	adrp	x0, .LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L540
	adrp	x0, .LANCHOR24
	ldrb	w0, [x0, #:lo12:.LANCHOR24]
	cbnz	w0, .L540
	adrp	x0, .LANCHOR27
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	cmp	w0, 9
	beq	.L540
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
.L540:
	adrp	x19, .LANCHOR26
	mov	w0, 0
	bl	hynix_reconfig_rr_para
	ldrb	w0, [x19, #:lo12:.LANCHOR26]
	cbz	w0, .L541
	adrp	x0, .LANCHOR48
	ldrb	w0, [x0, #:lo12:.LANCHOR48]
	tbz	x0, 0, .L541
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
	bl	nandc_set_if_mode
	strb	wzr, [x19, #:lo12:.LANCHOR26]
.L541:
	adrp	x3, .LANCHOR51
	ldrb	w0, [x3, #:lo12:.LANCHOR51]
	cbz	w0, .L542
	mov	w0, 0
	strb	wzr, [x3, #:lo12:.LANCHOR51]
	bl	nandc_set_seed
	mov	w0, 1
	strb	w0, [x3, #:lo12:.LANCHOR51]
.L542:
	mov	w0, 0
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	zftl_flash_de_init, .-zftl_flash_de_init
	.section	.text.nandc_randomizer_enable,"ax",@progbits
	.align	2
	.global	nandc_randomizer_enable
	.type	nandc_randomizer_enable, %function
nandc_randomizer_enable:
	adrp	x1, .LANCHOR51
	strb	w0, [x1, #:lo12:.LANCHOR51]
	ret
	.size	nandc_randomizer_enable, .-nandc_randomizer_enable
	.section	.text.nandc_get_chip_if,"ax",@progbits
	.align	2
	.global	nandc_get_chip_if
	.type	nandc_get_chip_if, %function
nandc_get_chip_if:
	adrp	x1, .LANCHOR7
	ubfiz	x0, x0, 8, 8
	add	x0, x0, 2048
	ldr	x1, [x1, #:lo12:.LANCHOR7]
	add	x0, x1, x0
	ret
	.size	nandc_get_chip_if, .-nandc_get_chip_if
	.section	.text.buf_reinit,"ax",@progbits
	.align	2
	.global	buf_reinit
	.type	buf_reinit, %function
buf_reinit:
	adrp	x0, .LANCHOR55
	add	x1, x0, :lo12:.LANCHOR55
	mov	w2, 0
.L562:
	and	w3, w2, 255
	strb	wzr, [x1, 2]
	add	w4, w3, 1
	strb	w3, [x1, 1]
	strb	w4, [x1]
	add	w2, w2, 1
	str	xzr, [x1, 16]
	cmp	w2, 16
	add	x1, x1, 64
	bne	.L562
	add	x0, x0, :lo12:.LANCHOR55
	mov	w1, -1
	strb	w1, [x0, 960]
	adrp	x0, .LANCHOR56
	strb	wzr, [x0, #:lo12:.LANCHOR56]
	adrp	x0, .LANCHOR57
	strb	w2, [x0, #:lo12:.LANCHOR57]
	ret
	.size	buf_reinit, .-buf_reinit
	.section	.text.buf_add_tail,"ax",@progbits
	.align	2
	.global	buf_add_tail
	.type	buf_add_tail, %function
buf_add_tail:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	str	x21, [sp, 32]
	mov	w0, -1
	strb	w0, [x1]
	mov	x20, x1
	ldrb	w1, [x19]
	cmp	w1, 255
	bne	.L570
	ldrb	w0, [x20, 1]
	cmp	w0, 255
	bne	.L566
	adrp	x1, .LANCHOR58
	adrp	x0, .LC0
	mov	w2, 74
	add	x1, x1, :lo12:.LANCHOR58
	add	x0, x0, :lo12:.LC0
	bl	printf
.L566:
	ldrb	w0, [x20, 1]
	strb	w0, [x19]
.L564:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L570:
	adrp	x0, .LANCHOR55
	add	x2, x0, :lo12:.LANCHOR55
	mov	x19, x0
.L571:
	sbfiz	x0, x1, 6, 32
	mov	w21, w1
	ldrb	w1, [x2, x0]
	cmp	w1, 255
	bne	.L571
	ldrb	w0, [x20, 1]
	cmp	w0, 255
	bne	.L568
	adrp	x1, .LANCHOR58
	adrp	x0, .LC0
	mov	w2, 81
	add	x1, x1, :lo12:.LANCHOR58
	add	x0, x0, :lo12:.LC0
	bl	printf
.L568:
	add	x0, x19, :lo12:.LANCHOR55
	sbfiz	x21, x21, 6, 32
	ldrb	w1, [x20, 1]
	strb	w1, [x0, x21]
	b	.L564
	.size	buf_add_tail, .-buf_add_tail
	.section	.text.queue_read_cmd,"ax",@progbits
	.align	2
	.type	queue_read_cmd, %function
queue_read_cmd:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 48
	ldr	w1, [x19, 40]
	bl	flash_start_page_read
	strb	wzr, [x19, 59]
	mov	w0, 1
	strb	w0, [x19, 58]
	mov	w0, -1
	strb	w0, [x19]
	mov	x1, x19
	adrp	x0, .LANCHOR59
	ldr	x19, [sp, 16]
	add	x0, x0, :lo12:.LANCHOR59
	ldp	x29, x30, [sp], 32
	b	buf_add_tail
	.size	queue_read_cmd, .-queue_read_cmd
	.section	.text.zbuf_free,"ax",@progbits
	.align	2
	.global	zbuf_free
	.type	zbuf_free, %function
zbuf_free:
	ldrb	w1, [x0, 2]
	adrp	x2, .LANCHOR56
	and	w1, w1, 8
	strb	w1, [x0, 2]
	cbz	w1, .L576
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L576
	stp	x29, x30, [sp, -16]!
	mov	x1, x0
	add	x0, x2, :lo12:.LANCHOR56
	add	x29, sp, 0
	bl	buf_add_tail
	adrp	x1, .LANCHOR57
	ldp	x29, x30, [sp], 16
	ldrb	w0, [x1, #:lo12:.LANCHOR57]
	add	w0, w0, 1
	strb	w0, [x1, #:lo12:.LANCHOR57]
	ret
.L576:
	ldrb	w1, [x2, #:lo12:.LANCHOR56]
	strb	w1, [x0]
	adrp	x1, .LANCHOR57
	ldrb	w0, [x0, 1]
	strb	w0, [x2, #:lo12:.LANCHOR56]
	ldrb	w0, [x1, #:lo12:.LANCHOR57]
	add	w0, w0, 1
	strb	w0, [x1, #:lo12:.LANCHOR57]
	ret
	.size	zbuf_free, .-zbuf_free
	.section	.text.buf_alloc,"ax",@progbits
	.align	2
	.global	buf_alloc
	.type	buf_alloc, %function
buf_alloc:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR57
	and	w20, w0, 255
	ldrb	w0, [x19, #:lo12:.LANCHOR57]
	cbz	w0, .L589
.L592:
	adrp	x2, .LANCHOR56
	adrp	x1, .LANCHOR55
	add	x0, x1, :lo12:.LANCHOR55
	ldrb	w3, [x2, #:lo12:.LANCHOR56]
	ubfiz	x4, x3, 6, 8
	add	x0, x0, x4
	mov	x4, x2
	cbz	w20, .L590
.L591:
	add	x1, x1, :lo12:.LANCHOR55
	sbfiz	x3, x3, 6, 32
	add	x2, x1, x3
	ldrb	w5, [x1, x3]
	strb	w5, [x4, #:lo12:.LANCHOR56]
	ldrb	w4, [x19, #:lo12:.LANCHOR57]
	strh	wzr, [x2, 50]
	sub	w4, w4, #1
	strb	w4, [x19, #:lo12:.LANCHOR57]
	mov	w4, 1
	strb	wzr, [x2, 56]
	strb	w4, [x2, 2]
	mov	w4, -1
	strb	wzr, [x2, 57]
	strb	w4, [x1, x3]
	mov	w1, -1
	str	xzr, [x2, 16]
	str	w1, [x2, 36]
	b	.L588
.L589:
	mov	w2, 121
	adrp	x1, .LANCHOR60
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR60
	add	x0, x0, :lo12:.LC0
	bl	printf
	ldrb	w0, [x19, #:lo12:.LANCHOR57]
	cbnz	w0, .L592
.L594:
	mov	x0, 0
.L588:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L590:
	ldrb	w2, [x19, #:lo12:.LANCHOR57]
	cmp	w2, 1
	bne	.L591
	b	.L594
	.size	buf_alloc, .-buf_alloc
	.section	.text.buf_remove_buf,"ax",@progbits
	.align	2
	.global	buf_remove_buf
	.type	buf_remove_buf, %function
buf_remove_buf:
	ldrb	w4, [x1, 1]
	ldrb	w2, [x0]
	cmp	w4, w2
	bne	.L602
	ldrb	w1, [x1]
	strb	w1, [x0]
.L606:
	mov	w0, 1
	ret
.L603:
	mov	w3, w2
	sbfiz	x2, x2, 6, 32
	ldrb	w2, [x0, x2]
	cmp	w4, w2
	bne	.L604
	sbfiz	x3, x3, 6, 32
	ldrb	w2, [x1]
	strb	w2, [x0, x3]
	mov	w0, -1
	strb	w0, [x1]
	b	.L606
.L602:
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
.L604:
	cmp	w2, 255
	bne	.L603
	mov	w0, 0
	ret
	.size	buf_remove_buf, .-buf_remove_buf
	.section	.text.buf_remove_free,"ax",@progbits
	.align	2
	.global	buf_remove_free
	.type	buf_remove_free, %function
buf_remove_free:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR57
	mov	x20, x0
	ldrb	w0, [x19, #:lo12:.LANCHOR57]
	cbnz	w0, .L608
	adrp	x1, .LANCHOR61
	adrp	x0, .LC0
	mov	w2, 172
	add	x1, x1, :lo12:.LANCHOR61
	add	x0, x0, :lo12:.LC0
	bl	printf
.L608:
	ldrb	w0, [x19, #:lo12:.LANCHOR57]
	cbz	w0, .L607
	mov	x1, x20
	adrp	x0, .LANCHOR56
	add	x0, x0, :lo12:.LANCHOR56
	bl	buf_remove_buf
	cmp	w0, 1
	bne	.L607
	ldrb	w0, [x19, #:lo12:.LANCHOR57]
	sub	w0, w0, #1
	strb	w0, [x19, #:lo12:.LANCHOR57]
	ldrb	w0, [x20, 2]
	orr	w0, w0, 1
	strb	w0, [x20, 2]
.L607:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	buf_remove_free, .-buf_remove_free
	.section	.text.dump_buf_info,"ax",@progbits
	.align	2
	.global	dump_buf_info
	.type	dump_buf_info, %function
dump_buf_info:
	sub	sp, sp, #64
	adrp	x0, .LANCHOR59
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	ldrb	w1, [x0, #:lo12:.LANCHOR59]
	stp	x19, x20, [sp, 32]
	adrp	x0, .LC41
	str	x21, [sp, 48]
	add	x0, x0, :lo12:.LC41
	adrp	x19, .LANCHOR55
	add	x19, x19, :lo12:.LANCHOR55
	bl	printf
	adrp	x20, .LC47
	adrp	x0, .LANCHOR62
	add	x20, x20, :lo12:.LC47
	add	x21, x19, 1024
	ldrb	w1, [x0, #:lo12:.LANCHOR62]
	adrp	x0, .LC42
	add	x0, x0, :lo12:.LC42
	bl	printf
	adrp	x0, .LANCHOR63
	ldrb	w1, [x0, #:lo12:.LANCHOR63]
	adrp	x0, .LC43
	add	x0, x0, :lo12:.LC43
	bl	printf
	adrp	x0, .LANCHOR64
	ldrb	w1, [x0, #:lo12:.LANCHOR64]
	adrp	x0, .LC44
	add	x0, x0, :lo12:.LC44
	bl	printf
	adrp	x0, .LANCHOR56
	ldrb	w1, [x0, #:lo12:.LANCHOR56]
	adrp	x0, .LC45
	add	x0, x0, :lo12:.LC45
	bl	printf
	adrp	x0, .LANCHOR57
	ldrb	w1, [x0, #:lo12:.LANCHOR57]
	adrp	x0, .LC46
	add	x0, x0, :lo12:.LC46
	bl	printf
.L614:
	ldp	w7, w0, [x19, 36]
	str	w0, [sp]
	ldrb	w5, [x19, 58]
	mov	x0, x20
	ldrh	w4, [x19, 50]
	add	x19, x19, 64
	ldrb	w3, [x19, -62]
	ldrb	w2, [x19, -64]
	ldrb	w1, [x19, -63]
	ldr	w6, [x19, -12]
	bl	printf
	cmp	x19, x21
	bne	.L614
	ldp	x19, x20, [sp, 32]
	ldp	x29, x30, [sp, 16]
	ldr	x21, [sp, 48]
	add	sp, sp, 64
	ret
	.size	dump_buf_info, .-dump_buf_info
	.section	.text.flash_check_bad_block,"ax",@progbits
	.align	2
	.global	flash_check_bad_block
	.type	flash_check_bad_block, %function
flash_check_bad_block:
	adrp	x3, .LANCHOR32
	add	x3, x3, :lo12:.LANCHOR32
	and	w5, w0, 255
	lsr	w4, w1, 5
	ldrb	w0, [x3, 13]
	ldrh	w2, [x3, 14]
	mul	w2, w2, w0
	mov	x0, 912
	and	w2, w2, 65535
	add	w2, w2, 31
	asr	w2, w2, 5
	lsl	w2, w2, 2
	umaddl	x0, w2, w5, x0
	adrp	x2, .LANCHOR6
	ldr	x2, [x2, #:lo12:.LANCHOR6]
	add	x0, x0, x4, uxtw 2
	ldr	w0, [x2, x0]
	lsr	w0, w0, w1
	and	w0, w0, 1
	ret
	.size	flash_check_bad_block, .-flash_check_bad_block
	.section	.text.flash_mask_bad_block,"ax",@progbits
	.align	2
	.global	flash_mask_bad_block
	.type	flash_mask_bad_block, %function
flash_mask_bad_block:
	stp	x29, x30, [sp, -48]!
	mov	w2, w1
	add	x29, sp, 0
	str	x21, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR32
	add	x0, x0, :lo12:.LANCHOR32
	stp	x19, x20, [sp, 16]
	mov	w20, w1
	ldrh	w19, [x0, 14]
	ldrb	w1, [x0, 13]
	adrp	x0, .LC48
	add	x0, x0, :lo12:.LC48
	mul	w19, w19, w1
	mov	w1, w21
	bl	printf
	and	w19, w19, 65535
	lsr	w0, w20, 5
	add	w1, w19, 31
	mov	x19, 912
	asr	w1, w1, 5
	mov	w2, 1
	lsl	w1, w1, 2
	umaddl	x1, w1, w21, x19
	ldr	x21, [sp, 32]
	add	x1, x1, x0, uxtw 2
	adrp	x0, .LANCHOR6
	ldr	x3, [x0, #:lo12:.LANCHOR6]
	lsl	w0, w2, w20
	ldp	x19, x20, [sp, 16]
	ldr	w2, [x3, x1]
	orr	w2, w2, w0
	str	w2, [x3, x1]
	ldp	x29, x30, [sp], 48
	ret
	.size	flash_mask_bad_block, .-flash_mask_bad_block
	.section	.text.ftl_gc_write_buf,"ax",@progbits
	.align	2
	.global	ftl_gc_write_buf
	.type	ftl_gc_write_buf, %function
ftl_gc_write_buf:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	ldrb	w1, [x0, 2]
	orr	w1, w1, 2
	strb	w1, [x0, 2]
	mov	x1, x0
	adrp	x0, .LANCHOR65
	add	x0, x0, :lo12:.LANCHOR65
	bl	buf_add_tail
	adrp	x1, .LANCHOR66
	ldp	x29, x30, [sp], 16
	ldrb	w0, [x1, #:lo12:.LANCHOR66]
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x1, #:lo12:.LANCHOR66]
	ret
	.size	ftl_gc_write_buf, .-ftl_gc_write_buf
	.section	.text.ftl_write_buf,"ax",@progbits
	.align	2
	.global	ftl_write_buf
	.type	ftl_write_buf, %function
ftl_write_buf:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	str	x21, [sp, 32]
	cbnz	x0, .L623
	mov	w2, 806
	adrp	x1, .LANCHOR67
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR67
	add	x0, x0, :lo12:.LC0
	bl	printf
	mov	w0, -1
.L622:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L626:
	mov	x1, x19
	adrp	x0, .LANCHOR65
	add	x0, x0, :lo12:.LANCHOR65
	bl	buf_add_tail
	adrp	x1, .LANCHOR69
	ldrb	w3, [x19, 56]
	ldrb	w0, [x21, #:lo12:.LANCHOR66]
	ldr	x1, [x1, #:lo12:.LANCHOR69]
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x21, #:lo12:.LANCHOR66]
	ldr	w2, [x1, 16]
	add	w2, w2, w3
	str	w2, [x1, 16]
	ldr	w2, [x1, 32]
	add	w2, w2, 1
	str	w2, [x1, 32]
	b	.L622
.L623:
	mov	x19, x0
	adrp	x0, .LANCHOR68
	mov	x20, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR68]
	ldrb	w2, [x19, 56]
	cmp	w2, w1
	bls	.L628
	adrp	x1, .LANCHOR67
	adrp	x0, .LC0
	mov	w2, 813
	add	x1, x1, :lo12:.LANCHOR67
	add	x0, x0, :lo12:.LC0
	bl	printf
.L628:
	ldrb	w0, [x19, 56]
	adrp	x21, .LANCHOR66
	cbz	w0, .L625
	ldrb	w1, [x20, #:lo12:.LANCHOR68]
	cmp	w1, w0
	bcs	.L626
.L625:
	mov	x0, x19
	bl	zbuf_free
	ldrb	w0, [x21, #:lo12:.LANCHOR66]
	b	.L622
	.size	ftl_write_buf, .-ftl_write_buf
	.section	.text.zftl_cache_flush,"ax",@progbits
	.align	2
	.global	zftl_cache_flush
	.type	zftl_cache_flush, %function
zftl_cache_flush:
	ret
	.size	zftl_cache_flush, .-zftl_cache_flush
	.section	.text.zftl_add_read_buf,"ax",@progbits
	.align	2
	.global	zftl_add_read_buf
	.type	zftl_add_read_buf, %function
zftl_add_read_buf:
	cbnz	x0, .L635
	adrp	x1, .LANCHOR70
	adrp	x0, .LC0
	mov	w2, 1147
	add	x1, x1, :lo12:.LANCHOR70
	add	x0, x0, :lo12:.LC0
	b	printf
.L635:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	ldrb	w1, [x0, 56]
	adrp	x0, .LANCHOR68
	ldrb	w0, [x0, #:lo12:.LANCHOR68]
	cmp	w1, w0
	bls	.L637
	adrp	x1, .LANCHOR70
	adrp	x0, .LC0
	mov	w2, 1154
	add	x1, x1, :lo12:.LANCHOR70
	add	x0, x0, :lo12:.LC0
	bl	printf
.L637:
	mov	x1, x19
	adrp	x0, .LANCHOR71
	add	x0, x0, :lo12:.LANCHOR71
	bl	buf_add_tail
	adrp	x1, .LANCHOR72
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ldrb	w0, [x1, #:lo12:.LANCHOR72]
	add	w0, w0, 1
	strb	w0, [x1, #:lo12:.LANCHOR72]
	ret
	.size	zftl_add_read_buf, .-zftl_add_read_buf
	.section	.text.zftl_get_density,"ax",@progbits
	.align	2
	.global	zftl_get_density
	.type	zftl_get_density, %function
zftl_get_density:
	cbnz	w0, .L642
	adrp	x0, .LANCHOR73
	ldr	w0, [x0, #:lo12:.LANCHOR73]
	ret
.L642:
	cmp	w0, 4
	cset	w0, cc
	lsl	w0, w0, 13
	ret
	.size	zftl_get_density, .-zftl_get_density
	.section	.text.gc_hook,"ax",@progbits
	.align	2
	.global	gc_hook
	.type	gc_hook, %function
gc_hook:
	ret
	.size	gc_hook, .-gc_hook
	.section	.text.vpn_check,"ax",@progbits
	.align	2
	.global	vpn_check
	.type	vpn_check, %function
vpn_check:
	ret
	.size	vpn_check, .-vpn_check
	.section	.text.ftl_scan_all_data,"ax",@progbits
	.align	2
	.global	ftl_scan_all_data
	.type	ftl_scan_all_data, %function
ftl_scan_all_data:
	ret
	.size	ftl_scan_all_data, .-ftl_scan_all_data
	.section	.text.FtlGetCurEraseBlock,"ax",@progbits
	.align	2
	.global	FtlGetCurEraseBlock
	.type	FtlGetCurEraseBlock, %function
FtlGetCurEraseBlock:
	adrp	x0, .LANCHOR74
	ldrh	w0, [x0, #:lo12:.LANCHOR74]
	ret
	.size	FtlGetCurEraseBlock, .-FtlGetCurEraseBlock
	.section	.text.FtlGetAllBlockNum,"ax",@progbits
	.align	2
	.global	FtlGetAllBlockNum
	.type	FtlGetAllBlockNum, %function
FtlGetAllBlockNum:
	adrp	x0, .LANCHOR8
	ldrh	w0, [x0, #:lo12:.LANCHOR8]
	ret
	.size	FtlGetAllBlockNum, .-FtlGetAllBlockNum
	.section	.text.FtlLowFormat,"ax",@progbits
	.align	2
	.global	FtlLowFormat
	.type	FtlLowFormat, %function
FtlLowFormat:
	mov	w0, 0
	ret
	.size	FtlLowFormat, .-FtlLowFormat
	.section	.text.gc_add_sblk,"ax",@progbits
	.align	2
	.global	gc_add_sblk
	.type	gc_add_sblk, %function
gc_add_sblk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR19
	stp	x19, x20, [sp, 16]
	and	w19, w0, 65535
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	and	w22, w1, 65535
	stp	x23, x24, [sp, 48]
	and	w23, w2, 65535
	tbz	x0, 8, .L652
	adrp	x1, .LANCHOR11
	uxtw	x0, w19
	mov	w3, w23
	ldr	x2, [x1, #:lo12:.LANCHOR11]
	adrp	x1, .LANCHOR9
	ldr	x1, [x1, #:lo12:.LANCHOR9]
	ldrh	w5, [x2, x0, lsl 1]
	mov	w2, w22
	add	x1, x1, x0, lsl 2
	adrp	x0, .LC49
	add	x0, x0, :lo12:.LC49
	ldrb	w4, [x1, 2]
	adrp	x1, .LANCHOR75
	ldrh	w7, [x1, #:lo12:.LANCHOR75]
	adrp	x1, .LANCHOR76+56
	ubfx	x4, x4, 5, 3
	ldrh	w6, [x1, #:lo12:.LANCHOR76+56]
	mov	w1, w19
	bl	printf
.L652:
	adrp	x0, .LANCHOR8
	mov	x20, x0
	ldrh	w1, [x0, #:lo12:.LANCHOR8]
	cmp	w1, w19
	bhi	.L653
	adrp	x1, .LANCHOR77
	adrp	x0, .LC0
	mov	w2, 543
	add	x1, x1, :lo12:.LANCHOR77
	add	x0, x0, :lo12:.LC0
	bl	printf
.L653:
	ldrh	w0, [x20, #:lo12:.LANCHOR8]
	cmp	w0, w19
	bhi	.L654
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L676
	adrp	x0, .LC50
	mov	w3, w23
	mov	w2, w22
	mov	w1, w19
	add	x0, x0, :lo12:.LC50
	bl	printf
.L676:
	mov	w0, 0
	b	.L651
.L654:
	adrp	x1, .LANCHOR11
	uxtw	x0, w19
	ldr	x1, [x1, #:lo12:.LANCHOR11]
	ldrh	w3, [x1, x0, lsl 1]
	adrp	x1, .LANCHOR9
	ldr	x1, [x1, #:lo12:.LANCHOR9]
	add	x0, x1, x0, lsl 2
	ldrb	w2, [x0, 2]
	tst	w2, 224
	bne	.L656
	cbz	w3, .L676
	mov	w2, 553
	adrp	x1, .LANCHOR77
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR77
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L676
.L656:
	adrp	x0, .LANCHOR76
	add	x1, x0, :lo12:.LANCHOR76
	ldrh	w0, [x0, #:lo12:.LANCHOR76]
	cmp	w0, w19
	beq	.L676
	adrp	x24, .LANCHOR12
	ldr	x0, [x24, #:lo12:.LANCHOR12]
	ldrh	w4, [x0, 48]
	cmp	w4, w19
	beq	.L676
	ldrh	w4, [x0, 16]
	cmp	w4, w19
	beq	.L676
	ldrh	w4, [x0, 80]
	cmp	w4, w19
	beq	.L676
	ldrh	w5, [x1, 56]
	add	x1, x1, 58
	mov	w4, 0
.L657:
	cmp	w4, w5
	bcc	.L658
	cbnz	w22, .L662
	adrp	x1, .LANCHOR78
	ldrh	w6, [x1, #:lo12:.LANCHOR78]
	cmp	w19, w6
	beq	.L676
	adrp	x4, .LANCHOR79
	add	x4, x4, :lo12:.LANCHOR79
	mov	x1, 0
.L661:
	ldrh	w7, [x1, x4]
	cmp	w19, w7
	bne	.L660
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L676
	mov	w5, w6
	mov	w4, w19
	ubfx	x2, x2, 5, 3
	mov	w1, w19
	adrp	x0, .LC51
	add	x0, x0, :lo12:.LC51
	bl	printf
	b	.L676
.L658:
	ldrh	w6, [x1], 2
	cmp	w6, w19
	beq	.L676
	add	w4, w4, 1
	b	.L657
.L660:
	add	x1, x1, 2
	cmp	x1, 16
	bne	.L661
	ubfiz	x20, x23, 7, 16
	add	x20, x20, 136
	add	x20, x0, x20
.L663:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L664
	adrp	x0, .LANCHOR75
	mov	w4, w3
	mov	w1, w19
	ubfx	x3, x2, 5, 3
	ldrh	w6, [x0, #:lo12:.LANCHOR75]
	mov	w2, w22
	adrp	x0, .LC52
	add	x0, x0, :lo12:.LC52
	bl	printf
.L664:
	mov	x0, x20
	add	x1, x20, 128
	mov	w2, 65535
.L667:
	ldrh	w3, [x0]
	cmp	w3, w2
	bne	.L665
	strh	w19, [x0]
	cbz	w22, .L666
	ldr	x1, [x24, #:lo12:.LANCHOR12]
	ldrh	w0, [x1, 124]
	add	w0, w0, 1
	strh	w0, [x1, 124]
.L686:
	mov	w0, 1
.L651:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L662:
	add	x20, x0, 392
	b	.L663
.L666:
	ldr	x0, [x24, #:lo12:.LANCHOR12]
	add	x23, x0, x23, uxth 1
	ldrh	w0, [x23, 120]
	add	w0, w0, 1
	strh	w0, [x23, 120]
	b	.L686
.L665:
	add	x0, x0, 2
	cmp	x1, x0
	bne	.L667
	b	.L686
	.size	gc_add_sblk, .-gc_add_sblk
	.section	.text.gc_mark_bad_ppa,"ax",@progbits
	.align	2
	.global	gc_mark_bad_ppa
	.type	gc_mark_bad_ppa, %function
gc_mark_bad_ppa:
	stp	x29, x30, [sp, -64]!
	adrp	x1, .LANCHOR80
	adrp	x3, .LANCHOR31
	add	x29, sp, 0
	ldrh	w1, [x1, #:lo12:.LANCHOR80]
	ldrb	w3, [x3, #:lo12:.LANCHOR31]
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	sub	w19, w19, w3
	lsr	w2, w0, w1
	sub	w19, w19, w1
	adrp	x1, .LANCHOR81
	str	x23, [sp, 48]
	mov	w23, 1
	ldrb	w1, [x1, #:lo12:.LANCHOR81]
	lsl	w19, w23, w19
	sub	w19, w19, #1
	stp	x21, x22, [sp, 32]
	and	w19, w19, w2
	adrp	x20, .LANCHOR76
	add	x21, x20, :lo12:.LANCHOR76
	mov	w3, w0
	and	w22, w2, 65535
	adrp	x0, .LC53
	udiv	w19, w19, w1
	mov	w2, w22
	ldr	w1, [x21, 2200]
	add	x0, x0, :lo12:.LC53
	and	w19, w19, 65535
	bl	printf
	mov	w1, w23
	mov	w2, 0
	mov	w0, w19
	bl	gc_add_sblk
	ldr	w0, [x21, 2200]
	mov	w1, 0
.L688:
	cmp	w1, w0
	bcc	.L690
	cmp	w0, 5
	bhi	.L689
	add	x20, x20, :lo12:.LANCHOR76
	add	w1, w0, 1
	str	w1, [x20, 2200]
	add	x20, x20, x0, uxtw 1
	strh	w22, [x20, 2204]
.L689:
	mov	w0, 0
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L690:
	add	x2, x21, x1, sxtw 1
	ldrh	w2, [x2, 2204]
	cmp	w2, w22
	beq	.L689
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L688
	.size	gc_mark_bad_ppa, .-gc_mark_bad_ppa
	.section	.text.gc_get_src_ppa_from_index,"ax",@progbits
	.align	2
	.global	gc_get_src_ppa_from_index
	.type	gc_get_src_ppa_from_index, %function
gc_get_src_ppa_from_index:
	adrp	x1, .LANCHOR82
	ubfiz	x0, x0, 2, 16
	ldr	x1, [x1, #:lo12:.LANCHOR82]
	ldr	w0, [x1, x0]
	ret
	.size	gc_get_src_ppa_from_index, .-gc_get_src_ppa_from_index
	.section	.text.gc_write_completed,"ax",@progbits
	.align	2
	.global	gc_write_completed
	.type	gc_write_completed, %function
gc_write_completed:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR63
	stp	x23, x24, [sp, 48]
	add	x22, x22, :lo12:.LANCHOR63
	stp	x25, x26, [sp, 64]
	adrp	x23, .LANCHOR55
	add	x25, x23, :lo12:.LANCHOR55
	stp	x19, x20, [sp, 16]
	str	x27, [sp, 80]
.L694:
	ldrb	w0, [x22]
	cmp	w0, 255
	bne	.L707
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L707:
	sxtw	x20, w0
	add	x1, x23, :lo12:.LANCHOR55
	lsl	x3, x20, 6
	add	x2, x1, x3
	ldrb	w0, [x1, x3]
	ldr	w1, [x2, 52]
	strb	w0, [x22]
	ldrh	w24, [x2, 48]
	cbz	w1, .L695
	ldr	w2, [x2, 40]
	adrp	x0, .LANCHOR76
	add	x0, x0, :lo12:.LANCHOR76
	mov	w3, 1
	str	w2, [x0, 2196]
	strh	w3, [x0, 2194]
	adrp	x0, .LC54
	add	x0, x0, :lo12:.LC54
	bl	printf
	adrp	x1, .LANCHOR83
	adrp	x0, .LC0
	mov	w2, 956
	add	x1, x1, :lo12:.LANCHOR83
	add	x0, x0, :lo12:.LC0
	bl	printf
.L695:
	adrp	x0, .LANCHOR84
	mov	x26, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR84]
	cmp	w1, 3
	bne	.L696
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L696
	adrp	x0, .LANCHOR12
	adrp	x1, .LANCHOR85
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldrb	w1, [x1, #:lo12:.LANCHOR85]
	ldrb	w0, [x0, 89]
	mov	w19, w0
	cmp	w1, w0
	bhi	.L708
	cmp	w0, 2
	mov	w0, 2
	csel	w19, w19, w0, ls
.L697:
	add	w19, w19, w19, lsl 1
.L698:
	adrp	x1, .LANCHOR88
	and	x21, x24, 65535
	add	x0, x25, x20, lsl 6
	mov	x27, x1
	ldr	x2, [x1, #:lo12:.LANCHOR88]
	ldrb	w0, [x0, 1]
	ldrb	w2, [x2, x21]
	cmp	w2, w0
	beq	.L699
	adrp	x1, .LANCHOR83
	adrp	x0, .LC0
	mov	w2, 976
	add	x1, x1, :lo12:.LANCHOR83
	add	x0, x0, :lo12:.LC0
	bl	printf
.L699:
	add	x0, x25, x20, lsl 6
	ldrb	w0, [x0, 61]
	cmp	w0, 3
	beq	.L700
	ldrb	w0, [x26, #:lo12:.LANCHOR84]
	cmp	w0, 3
	bne	.L700
	adrp	x0, .LANCHOR89
	ldrb	w0, [x0, #:lo12:.LANCHOR89]
	cbnz	w0, .L700
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L700
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L700
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L701
	adrp	x0, .LANCHOR87
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cbnz	w0, .L700
.L701:
	ldr	x1, [x27, #:lo12:.LANCHOR88]
	mov	x0, 0
	add	x21, x1, x21
.L702:
	cmp	w19, w0, uxth
	bls	.L694
	ldrb	w1, [x21, x0]
	add	x0, x0, 1
	add	x1, x25, x1, lsl 6
	strb	wzr, [x1, 61]
	b	.L702
.L708:
	mov	w19, 1
	b	.L697
.L696:
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L709
	adrp	x0, .LANCHOR87
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cmp	w0, 0
	cset	w19, ne
	add	w19, w19, 1
	b	.L698
.L709:
	mov	w19, 1
	b	.L698
.L700:
	adrp	x20, .LANCHOR76
	add	x20, x20, :lo12:.LANCHOR76
	add	x19, x21, x19, uxth
	strh	w24, [x20, 2108]
	mov	w24, -1
.L703:
	cmp	x21, x19
	beq	.L694
	ldr	x1, [x27, #:lo12:.LANCHOR88]
	ldrb	w0, [x1, x21]
	strb	w24, [x1, x21]
	add	x21, x21, 1
	sbfiz	x1, x0, 6, 32
	ubfiz	x0, x0, 6, 8
	add	x1, x25, x1
	add	x0, x25, x0
	strb	wzr, [x1, 61]
	bl	zbuf_free
	ldrb	w0, [x20, 7]
	sub	w0, w0, #1
	strb	w0, [x20, 7]
	b	.L703
	.size	gc_write_completed, .-gc_write_completed
	.section	.text.gc_get_src_blk,"ax",@progbits
	.align	2
	.global	gc_get_src_blk
	.type	gc_get_src_blk, %function
gc_get_src_blk:
	adrp	x0, .LANCHOR12
	ldr	x2, [x0, #:lo12:.LANCHOR12]
	adrp	x0, .LANCHOR90
	ldrb	w3, [x0, #:lo12:.LANCHOR90]
	ldrh	w0, [x2, 124]
	cbz	w0, .L722
	add	x1, x2, 392
	mov	w4, 1
.L723:
	add	x5, x1, 128
	mov	w6, 65535
.L727:
	ldrh	w0, [x1]
	cmp	w0, w6
	beq	.L725
	mov	w5, -1
	strh	w5, [x1]
	cbz	w4, .L726
	ldrh	w1, [x2, 124]
	sub	w1, w1, #1
	strh	w1, [x2, 124]
	ret
.L722:
	add	x0, x2, x3, sxtw 1
	ldrh	w0, [x0, 120]
	cbz	w0, .L728
	ubfiz	x1, x3, 7, 8
	mov	w4, 0
	add	x1, x1, 136
	add	x1, x2, x1
	b	.L723
.L726:
	add	x2, x2, x3, uxtb 1
	ldrh	w1, [x2, 120]
	sub	w1, w1, #1
	strh	w1, [x2, 120]
	ret
.L725:
	add	x1, x1, 2
	cmp	x1, x5
	bne	.L727
	ret
.L728:
	mov	w0, 65535
	ret
	.size	gc_get_src_blk, .-gc_get_src_blk
	.section	.text.gc_free_temp_buf,"ax",@progbits
	.align	2
	.global	gc_free_temp_buf
	.type	gc_free_temp_buf, %function
gc_free_temp_buf:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR76
	add	x0, x20, :lo12:.LANCHOR76
	stp	x21, x22, [sp, 32]
	ldrb	w1, [x0, 7]
	cbz	w1, .L737
	adrp	x1, .LANCHOR57
	ldrb	w1, [x1, #:lo12:.LANCHOR57]
	cmp	w1, 1
	bhi	.L737
	ldrh	w19, [x0, 2108]
	adrp	x2, .LANCHOR85
	adrp	x0, .LANCHOR91
	adrp	x21, .LANCHOR88
	ldrb	w2, [x2, #:lo12:.LANCHOR85]
	add	w1, w19, 24
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	ldr	x4, [x21, #:lo12:.LANCHOR88]
	mul	w0, w0, w2
	cmp	w0, w1
	csel	w1, w0, w1, ls
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
.L732:
	cmp	w19, w1
	bcc	.L735
.L737:
	mov	w0, 0
	b	.L730
.L735:
	uxtw	x22, w19
	ldrb	w2, [x4, x22]
	cmp	w2, 255
	beq	.L733
	sbfiz	x3, x2, 6, 32
	add	x3, x0, x3
	ldrb	w3, [x3, 61]
	cbnz	w3, .L733
	ubfiz	x2, x2, 6, 8
	add	x0, x0, x2
	bl	zbuf_free
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L734
	ldr	x0, [x21, #:lo12:.LANCHOR88]
	mov	w1, w19
	ldrb	w2, [x0, x22]
	adrp	x0, .LC55
	add	x0, x0, :lo12:.LC55
	bl	printf
.L734:
	ldr	x0, [x21, #:lo12:.LANCHOR88]
	add	x20, x20, :lo12:.LANCHOR76
	mov	w1, -1
	strb	w1, [x0, x22]
	ldrb	w0, [x20, 7]
	sub	w0, w0, #1
	strb	w0, [x20, 7]
	mov	w0, 1
.L730:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L733:
	add	w19, w19, 1
	b	.L732
	.size	gc_free_temp_buf, .-gc_free_temp_buf
	.section	.text.get_ink_scaned_blk,"ax",@progbits
	.align	2
	.global	get_ink_scaned_blk
	.type	get_ink_scaned_blk, %function
get_ink_scaned_blk:
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	ldrh	w2, [x1, 2112]
	cbz	w2, .L747
	sub	w2, w2, #1
	strh	w2, [x1, 2112]
	add	x0, x1, x2, sxtw 1
	ldrh	w0, [x0, 2114]
	ret
.L747:
	mov	w0, 65535
	ret
	.size	get_ink_scaned_blk, .-get_ink_scaned_blk
	.section	.text.print_gc_debug_info,"ax",@progbits
	.align	2
	.global	print_gc_debug_info
	.type	print_gc_debug_info, %function
print_gc_debug_info:
	adrp	x2, .LANCHOR92
	adrp	x1, .LANCHOR76
	add	x0, x1, :lo12:.LANCHOR76
	ldrh	w6, [x2, #:lo12:.LANCHOR92]
	adrp	x2, .LANCHOR57
	ldrh	w1, [x1, #:lo12:.LANCHOR76]
	ldrb	w5, [x0, 7]
	ldrb	w4, [x2, #:lo12:.LANCHOR57]
	ldrh	w3, [x0, 2106]
	ldrh	w2, [x0, 2]
	adrp	x0, .LC56
	add	x0, x0, :lo12:.LC56
	b	printf
	.size	print_gc_debug_info, .-print_gc_debug_info
	.section	.text._list_pop_index_node,"ax",@progbits
	.align	2
	.global	_list_pop_index_node
	.type	_list_pop_index_node, %function
_list_pop_index_node:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ldr	x20, [x0]
	cbz	x20, .L755
	adrp	x3, .LANCHOR4
	and	w1, w1, 65535
	mov	w4, 65535
	mov	w5, 6
	ldr	x19, [x3, #:lo12:.LANCHOR4]
.L751:
	cbnz	w1, .L752
.L754:
	sub	x19, x20, x19
	mov	x1, -6148914691236517206
	asr	x19, x19, 1
	movk	x1, 0xaaab, lsl 0
	mul	x19, x19, x1
	and	w19, w19, 65535
	mov	w1, w19
	bl	_list_remove_node
	mov	w0, -1
	strh	w0, [x20]
	strh	w0, [x20, 2]
	mov	w0, w19
.L749:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L752:
	ldrh	w3, [x20]
	cmp	w3, w4
	beq	.L754
	sub	w1, w1, #1
	umaddl	x20, w3, w5, x19
	and	w1, w1, 65535
	b	.L751
.L755:
	mov	w0, 65535
	b	.L749
	.size	_list_pop_index_node, .-_list_pop_index_node
	.section	.text._list_get_gc_head_node,"ax",@progbits
	.align	2
	.global	_list_get_gc_head_node
	.type	_list_get_gc_head_node, %function
_list_get_gc_head_node:
	ldr	x0, [x0]
	and	w1, w1, 65535
	cbz	x0, .L762
	adrp	x2, .LANCHOR4
	mov	w3, 65535
	mov	w4, 6
	ldr	x2, [x2, #:lo12:.LANCHOR4]
.L759:
	cbz	w1, .L760
	ldrh	w0, [x0]
	cmp	w0, w3
	bne	.L761
	ret
.L761:
	sub	w1, w1, #1
	umaddl	x0, w0, w4, x2
	and	w1, w1, 65535
	b	.L759
.L762:
	mov	w0, 65535
	ret
.L760:
	sub	x0, x0, x2
	mov	x1, -6148914691236517206
	asr	x0, x0, 1
	movk	x1, 0xaaab, lsl 0
	mul	x0, x0, x1
	and	w0, w0, 65535
	ret
	.size	_list_get_gc_head_node, .-_list_get_gc_head_node
	.section	.text.gc_search_src_blk,"ax",@progbits
	.align	2
	.global	gc_search_src_blk
	.type	gc_search_src_blk, %function
gc_search_src_blk:
	stp	x29, x30, [sp, -176]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	and	w0, w1, 255
	stp	x19, x20, [sp, 16]
	str	w0, [x29, 160]
	adrp	x0, .LANCHOR12
	and	w19, w2, 255
	stp	x23, x24, [sp, 48]
	ldr	x2, [x0, #:lo12:.LANCHOR12]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	add	x0, x2, x22, sxtw 1
	ldrh	w21, [x0, 120]
	cbz	w21, .L765
	mov	w0, w21
.L764:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 176
	ret
.L765:
	adrp	x0, .LANCHOR76
	add	x1, x0, :lo12:.LANCHOR76
	ldrh	w1, [x1, 56]
	cmp	w1, 1
	bhi	.L767
	adrp	x3, .LANCHOR93
	strh	wzr, [x3, #:lo12:.LANCHOR93]
	adrp	x3, .LANCHOR94
	strh	wzr, [x3, #:lo12:.LANCHOR94]
	adrp	x3, .LANCHOR95
	strh	wzr, [x3, #:lo12:.LANCHOR95]
.L767:
	cbnz	w22, .L768
	adrp	x26, .LANCHOR94
	adrp	x25, .LANCHOR96
	add	x23, x26, :lo12:.LANCHOR94
	add	x25, x25, :lo12:.LANCHOR96
	mov	w24, 0
	mov	w20, 0
	mov	w27, 65535
.L769:
	cmp	w19, w20
	blt	.L774
	ldrh	w6, [x23]
	mov	x0, x25
	mov	w1, w6
	bl	_list_get_gc_head_node
	add	w2, w6, 1
	and	w2, w2, 65535
	strh	w2, [x23]
	and	w1, w0, 65535
	mov	w28, w1
	cmp	w1, w27
	beq	.L770
	adrp	x0, .LANCHOR19
	adrp	x6, .LANCHOR11
	uxtw	x4, w1
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L771
	ldr	x0, [x6, #:lo12:.LANCHOR11]
	stp	x6, x4, [x29, 144]
	ldrh	w3, [x0, x4, lsl 1]
	adrp	x0, .LC57
	add	x0, x0, :lo12:.LC57
	bl	printf
	ldp	x6, x4, [x29, 144]
.L771:
	ldr	x0, [x6, #:lo12:.LANCHOR11]
	ldrh	w1, [x0, x4, lsl 1]
	adrp	x0, .LANCHOR75
	ldrh	w0, [x0, #:lo12:.LANCHOR75]
	cmp	w1, w0
	bcs	.L772
	mov	w2, 0
	mov	w1, 0
	mov	w0, w28
	bl	gc_add_sblk
	cbz	w0, .L773
	add	w5, w24, 1
	and	w24, w5, 65535
	cmp	w24, w19
	bcc	.L773
.L774:
	ldr	x0, [x29, 160]
	tbz	x0, 1, .L776
	adrp	x0, .LANCHOR97
	ldrh	w0, [x0, #:lo12:.LANCHOR97]
	cmp	w0, 32
	bls	.L776
	adrp	x23, .LANCHOR99
	adrp	x20, .LANCHOR95
	adrp	x26, .LANCHOR98
	add	x20, x20, :lo12:.LANCHOR95
	add	x26, x26, :lo12:.LANCHOR98
	add	x27, x23, :lo12:.LANCHOR99
	mov	w25, 0
.L777:
	cmp	w19, w25
	blt	.L781
	ldrh	w6, [x20]
	mov	x0, x26
	mov	w1, w6
	bl	_list_get_gc_head_node
	add	w6, w6, 1
	strh	w6, [x20]
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L778
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ldrh	w2, [x2, x1]
	ldrh	w1, [x27]
	cmp	w2, w1
	bcs	.L778
	mov	w2, 0
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L780
	add	w5, w24, 1
	and	w24, w5, 65535
	cmp	w24, w19
	bcc	.L780
.L781:
	cmp	w24, w19
	adrp	x0, .LANCHOR100
	bcs	.L783
	ldrh	w1, [x0, #:lo12:.LANCHOR100]
	adrp	x3, .LANCHOR85
	adrp	x0, .LANCHOR91
	ldrh	w2, [x23, #:lo12:.LANCHOR99]
	ldrb	w3, [x3, #:lo12:.LANCHOR85]
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	mul	w0, w0, w3
	sub	w0, w0, w1, lsr 2
	cmp	w2, w0
	bge	.L776
	add	w1, w2, w1, lsr 3
	strh	w1, [x23, #:lo12:.LANCHOR99]
.L776:
	ldr	x0, [x29, 160]
	tbz	x0, 0, .L784
	and	w23, w19, 65535
	cmp	w24, w23
	bcs	.L784
	adrp	x20, .LANCHOR93
	adrp	x25, .LANCHOR101
	add	x20, x20, :lo12:.LANCHOR93
	add	x25, x25, :lo12:.LANCHOR101
	mov	w26, 65535
.L789:
	ldrh	w6, [x20]
	mov	x0, x25
	mov	w1, w6
	bl	_list_get_gc_head_node
	add	w6, w6, 1
	strh	w6, [x20]
	cmp	w26, w0, uxth
	beq	.L785
	mov	w2, 0
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L786
	add	w5, w24, 1
	and	w24, w5, 65535
	cmp	w23, w24
	bhi	.L786
.L787:
	adrp	x0, .LANCHOR100
	adrp	x1, .LANCHOR75
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	ldrh	w2, [x1, #:lo12:.LANCHOR75]
	cmp	w2, w0, lsr 1
	bls	.L784
	sub	w0, w2, w0, lsr 3
	b	.L875
.L772:
	strh	wzr, [x26, #:lo12:.LANCHOR94]
	b	.L774
.L770:
	strh	wzr, [x23]
	b	.L774
.L773:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L769
.L778:
	strh	wzr, [x20]
	b	.L781
.L780:
	add	w25, w25, 1
	and	w25, w25, 65535
	b	.L777
.L783:
	ldrh	w1, [x23, #:lo12:.LANCHOR99]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w1, w0
	bls	.L776
	sub	w0, w1, w0, lsr 3
	strh	w0, [x23, #:lo12:.LANCHOR99]
	b	.L776
.L785:
	strh	wzr, [x20]
.L788:
	cmp	w24, w23
	bcs	.L787
	adrp	x1, .LANCHOR75
	adrp	x0, .LANCHOR100
	ldrh	w2, [x1, #:lo12:.LANCHOR75]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w2, w0
	bcs	.L784
	add	w0, w2, w0, lsr 3
.L875:
	strh	w0, [x1, #:lo12:.LANCHOR75]
.L784:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L820
	ldr	w2, [x29, 160]
	adrp	x0, .LC58
	mov	w4, w19
	mov	w3, w24
	mov	w1, w22
	add	x0, x0, :lo12:.LC58
	bl	printf
.L820:
	mov	w0, w24
	b	.L764
.L786:
	add	w21, w21, 1
	and	w21, w21, 65535
	cmp	w23, w21
	bhi	.L789
	b	.L788
.L768:
	adrp	x23, .LANCHOR85
	adrp	x25, .LANCHOR91
	stp	x25, x23, [x29, 144]
	cmp	w19, 1
	ldrb	w20, [x23, #:lo12:.LANCHOR85]
	ldrh	w3, [x25, #:lo12:.LANCHOR91]
	mul	w20, w20, w3
	and	w20, w20, 65535
	bne	.L790
	cbz	w1, .L790
	ldrh	w3, [x2, 80]
	mov	w2, 65535
	cmp	w3, w2
	beq	.L823
	add	x2, x0, :lo12:.LANCHOR76
	ldrh	w2, [x2, 2106]
	sub	w20, w20, w2
	and	w20, w20, 65535
.L823:
	mov	w19, 8
.L790:
	add	x0, x0, :lo12:.LANCHOR76
	strh	wzr, [x0, 2192]
	adrp	x0, .LANCHOR102
	strh	wzr, [x0, #:lo12:.LANCHOR102]
	ldr	w0, [x29, 160]
	and	w0, w0, 1
	str	w0, [x29, 128]
	ldr	x0, [x29, 160]
	tbz	x0, 0, .L824
	adrp	x2, .LANCHOR104
	adrp	x26, .LANCHOR103
	str	x2, [x29, 120]
	ldrh	w0, [x26, #:lo12:.LANCHOR103]
	ldrh	w3, [x2, #:lo12:.LANCHOR104]
	cmp	w0, w3, lsr 2
	bhi	.L792
	adrp	x2, .LANCHOR105
	ldrh	w2, [x2, #:lo12:.LANCHOR105]
	cmp	w2, w0
	bcs	.L825
.L792:
	cmp	w1, 1
	adrp	x25, .LANCHOR93
	adrp	x28, .LANCHOR101
	bls	.L794
.L796:
	mov	w24, 0
.L795:
	add	x0, x28, :lo12:.LANCHOR101
	add	x25, x25, :lo12:.LANCHOR93
	adrp	x28, .LANCHOR105
	add	x28, x28, :lo12:.LANCHOR105
	mov	w23, 0
	mov	w27, 64
	str	x0, [x29, 136]
.L799:
	ldrh	w7, [x25]
	ldr	x0, [x29, 136]
	mov	w1, w7
	bl	_list_get_gc_head_node
	and	w6, w0, 65535
	str	w6, [x29, 112]
	mov	w1, 65535
	cmp	w6, w1
	beq	.L797
	add	w7, w7, 1
	mov	w2, w22
	strh	w7, [x25]
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L798
	adrp	x0, .LANCHOR11
	ldr	w6, [x29, 112]
	add	w5, w24, 1
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	and	w24, w5, 65535
	ubfiz	x6, x6, 1, 16
	cmp	w24, w19
	ldrh	w0, [x0, x6]
	add	w3, w23, w0
	and	w23, w3, 65535
	bcs	.L793
	cmp	w20, w23
	bcc	.L793
	ldrh	w0, [x28]
	ldrh	w1, [x26, #:lo12:.LANCHOR103]
	cmp	w0, w1, lsl 1
	ble	.L798
.L793:
	adrp	x0, .LANCHOR105
	ldrh	w1, [x0, #:lo12:.LANCHOR105]
	ldr	x0, [x29, 120]
	ldrh	w0, [x0, #:lo12:.LANCHOR104]
	cmp	w1, w0, lsr 2
	bhi	.L821
	ldrh	w0, [x26, #:lo12:.LANCHOR103]
	add	w0, w0, 8
	cmp	w1, w0
	ble	.L791
.L821:
	cmp	w20, w23
	bls	.L791
	adrp	x7, .LANCHOR94
	and	w25, w19, 65535
	add	x28, x7, :lo12:.LANCHOR94
	adrp	x0, .LANCHOR96
	mov	w26, 64
	add	x0, x0, :lo12:.LANCHOR96
	adrp	x27, .LANCHOR11
	str	x0, [x29, 136]
.L802:
	ldrh	w6, [x28]
	ldr	x0, [x29, 136]
	mov	w1, w6
	bl	_list_get_gc_head_node
	and	w4, w0, 65535
	str	w4, [x29, 120]
	mov	w1, 65535
	cmp	w4, w1
	beq	.L800
	add	w6, w6, 1
	mov	w2, w22
	strh	w6, [x28]
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L801
	ldr	w4, [x29, 120]
	add	w5, w24, 1
	ldr	x0, [x27, #:lo12:.LANCHOR11]
	and	w24, w5, 65535
	cmp	w24, w25
	ubfiz	x4, x4, 1, 16
	ldrh	w0, [x0, x4]
	add	w3, w23, w0
	and	w23, w3, 65535
	bcs	.L791
	cmp	w20, w23
	bcs	.L801
.L791:
	ldr	x0, [x29, 160]
	tbz	x0, 1, .L803
	adrp	x0, .LANCHOR97
	str	x0, [x29, 112]
	ldrh	w1, [x0, #:lo12:.LANCHOR97]
	cmp	w1, 32
	bls	.L803
	cmp	w23, w20
	bcs	.L803
	adrp	x25, .LANCHOR95
	adrp	x0, .LANCHOR98
	add	x28, x25, :lo12:.LANCHOR95
	add	x0, x0, :lo12:.LANCHOR98
	adrp	x27, .LANCHOR106
	str	x0, [x29, 120]
	mov	w26, 64
	add	x0, x27, :lo12:.LANCHOR106
	str	x0, [x29, 136]
.L809:
	ldrh	w6, [x28]
	ldr	x0, [x29, 120]
	mov	w1, w6
	bl	_list_get_gc_head_node
	and	w8, w0, 65535
	mov	w1, 65535
	cmp	w8, w1
	beq	.L804
	add	w6, w6, 1
	strh	w6, [x28]
	cmp	w19, 1
	bne	.L805
	ldp	x2, x1, [x29, 144]
	ldrb	w1, [x1, #:lo12:.LANCHOR85]
	ldrh	w2, [x2, #:lo12:.LANCHOR91]
	mul	w2, w1, w2
	adrp	x1, .LANCHOR100
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	sub	w1, w2, w1, lsr 3
	ldr	x2, [x29, 136]
	strh	w1, [x2]
.L805:
	ubfiz	x6, x8, 1, 16
	adrp	x8, .LANCHOR11
	stp	x8, x6, [x29, 96]
	ldr	x1, [x8, #:lo12:.LANCHOR11]
	ldrh	w2, [x1, x6]
	ldr	x1, [x29, 136]
	ldrh	w1, [x1]
	cmp	w2, w1
	bcs	.L806
	mov	w2, w22
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L807
	ldp	x8, x6, [x29, 96]
	add	w5, w24, 1
	add	w21, w21, 1
	and	w24, w5, 65535
	and	w21, w21, 65535
	cmp	w24, w19
	ldr	x0, [x8, #:lo12:.LANCHOR11]
	ldrh	w0, [x0, x6]
	add	w3, w23, w0
	and	w23, w3, 65535
	bcs	.L808
	cmp	w20, w23
	bcs	.L807
.L808:
	cmp	w24, w19
	adrp	x0, .LANCHOR100
	bcc	.L810
	cbnz	w21, .L811
	ldr	x1, [x29, 112]
	ldrh	w2, [x1, #:lo12:.LANCHOR97]
	adrp	x1, .LANCHOR107
	ldrh	w1, [x1, #:lo12:.LANCHOR107]
	cmp	w2, w1
	bls	.L811
.L810:
	ldrh	w2, [x0, #:lo12:.LANCHOR100]
	ldp	x0, x3, [x29, 144]
	ldrh	w1, [x27, #:lo12:.LANCHOR106]
	lsr	w2, w2, 3
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	ldrb	w6, [x3, #:lo12:.LANCHOR85]
	mul	w0, w0, w6
	sub	w0, w0, w2
	cmp	w1, w0
	bge	.L803
	add	w1, w1, w2
	strh	w1, [x27, #:lo12:.LANCHOR106]
.L803:
	ldr	w0, [x29, 128]
	cbz	w0, .L784
	and	w27, w19, 65535
	cmp	w24, w27
	bcs	.L784
	cmp	w23, w20
	bcs	.L784
	adrp	x26, .LANCHOR96
	adrp	x4, .LANCHOR94
	add	x0, x26, :lo12:.LANCHOR96
	add	x28, x4, :lo12:.LANCHOR94
	adrp	x21, .LANCHOR108
	str	x0, [x29, 144]
	mov	w25, 64
	add	x0, x21, :lo12:.LANCHOR108
	adrp	x26, .LANCHOR11
	str	x0, [x29, 136]
.L819:
	ldrh	w6, [x28]
	ldr	x0, [x29, 144]
	mov	w1, w6
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L813
	add	w6, w6, 1
	strh	w6, [x28]
	ubfiz	x6, x1, 1, 16
	ldr	x1, [x26, #:lo12:.LANCHOR11]
	ldrh	w2, [x1, x6]
	ldr	x1, [x29, 136]
	ldrh	w1, [x1]
	cmp	w2, w1
	bcs	.L814
	adrp	x1, .LANCHOR104
	ldrh	w2, [x1, #:lo12:.LANCHOR104]
	adrp	x1, .LANCHOR105
	ldrh	w1, [x1, #:lo12:.LANCHOR105]
	cmp	w1, w2, lsr 1
	bls	.L815
.L814:
	mov	w2, w22
	mov	w1, 0
	str	x6, [x29, 128]
	bl	gc_add_sblk
	cbz	w0, .L816
	adrp	x0, .LANCHOR11
	ldr	x6, [x29, 128]
	add	w5, w24, 1
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	and	w24, w5, 65535
	cmp	w27, w24
	ldrh	w0, [x0, x6]
	add	w3, w23, w0
	and	w23, w3, 65535
	bls	.L817
	cmp	w20, w23
	bcs	.L816
.L818:
	adrp	x0, .LANCHOR100
	ldrh	w1, [x21, #:lo12:.LANCHOR108]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w1, w0, lsr 1
	bls	.L784
	sub	w0, w1, w0, lsr 3
	strh	w0, [x21, #:lo12:.LANCHOR108]
	b	.L784
.L794:
	lsr	w0, w0, 2
	mov	w1, 0
	strh	w0, [x25, #:lo12:.LANCHOR93]
	add	x0, x28, :lo12:.LANCHOR101
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L796
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, #:lo12:.LANCHOR11]
	adrp	x2, .LANCHOR100
	ldrh	w2, [x2, #:lo12:.LANCHOR100]
	ldrh	w1, [x3, x1]
	cmp	w1, w2, lsr 2
	bcs	.L796
	mov	w1, 1
	mov	w2, w22
	strh	w1, [x25, #:lo12:.LANCHOR93]
	mov	w1, 0
	bl	gc_add_sblk
	cmp	w0, 0
	cset	w24, ne
	b	.L795
.L797:
	strh	wzr, [x25]
	b	.L793
.L798:
	sub	w27, w27, #1
	ands	w27, w27, 65535
	bne	.L799
	b	.L793
.L800:
	cmp	w6, 64
	bls	.L791
	strh	wzr, [x28]
	b	.L791
.L801:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L802
	b	.L791
.L824:
	mov	w23, 0
	mov	w24, 0
	b	.L791
.L806:
	strh	wzr, [x25, #:lo12:.LANCHOR95]
	b	.L808
.L804:
	strh	wzr, [x28]
	b	.L808
.L807:
	sub	w26, w26, #1
	ands	w26, w26, 65535
	bne	.L809
	b	.L808
.L811:
	ldr	x1, [x29, 152]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	ldrh	w2, [x27, #:lo12:.LANCHOR106]
	ldrb	w1, [x1, #:lo12:.LANCHOR85]
	mul	w1, w1, w0
	cmp	w2, w1
	ble	.L784
	sub	w0, w2, w0, lsr 3
	strh	w0, [x27, #:lo12:.LANCHOR106]
	b	.L784
.L813:
	cmp	w6, 64
	bls	.L815
	strh	wzr, [x28]
.L815:
	cmp	w24, w27
	bcc	.L818
.L817:
	adrp	x0, .LANCHOR100
	ldrh	w2, [x21, #:lo12:.LANCHOR108]
	ldrh	w1, [x0, #:lo12:.LANCHOR100]
	ldr	x0, [x29, 152]
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	mul	w0, w0, w1
	sub	w0, w0, #32
	cmp	w2, w0
	bge	.L784
	add	w1, w2, w1, lsr 3
	strh	w1, [x21, #:lo12:.LANCHOR108]
	b	.L784
.L816:
	sub	w25, w25, #1
	ands	w25, w25, 65535
	bne	.L819
	b	.L815
.L825:
	mov	w23, 0
	mov	w24, 0
	b	.L793
	.size	gc_search_src_blk, .-gc_search_src_blk
	.section	.text.zftl_get_gc_node,"ax",@progbits
	.align	2
	.global	zftl_get_gc_node
	.type	zftl_get_gc_node, %function
zftl_get_gc_node:
	and	w1, w1, 65535
	and	w0, w0, 65535
	cmp	w1, 5
	bne	.L877
	mov	w1, w0
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
.L879:
	b	_list_get_gc_head_node
.L877:
	cmp	w1, 2
	mov	w1, w0
	bne	.L878
	adrp	x0, .LANCHOR101
	add	x0, x0, :lo12:.LANCHOR101
	b	.L879
.L878:
	adrp	x0, .LANCHOR96
	add	x0, x0, :lo12:.LANCHOR96
	b	.L879
	.size	zftl_get_gc_node, .-zftl_get_gc_node
	.section	.text.zftl_insert_free_list,"ax",@progbits
	.align	2
	.global	zftl_insert_free_list
	.type	zftl_insert_free_list, %function
zftl_insert_free_list:
	and	w1, w0, 65535
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x1, uxth 2
	ldrb	w0, [x0, 2]
	ands	w0, w0, 24
	bne	.L881
	adrp	x2, .LANCHOR109
	adrp	x0, .LANCHOR110
	add	x2, x2, :lo12:.LANCHOR109
	add	x0, x0, :lo12:.LANCHOR110
.L883:
	b	_insert_free_list
.L881:
	cmp	w0, 16
	bne	.L882
	adrp	x2, .LANCHOR111
	adrp	x0, .LANCHOR112
	add	x2, x2, :lo12:.LANCHOR111
	add	x0, x0, :lo12:.LANCHOR112
	b	.L883
.L882:
	adrp	x2, .LANCHOR113
	adrp	x0, .LANCHOR114
	add	x2, x2, :lo12:.LANCHOR113
	add	x0, x0, :lo12:.LANCHOR114
	b	.L883
	.size	zftl_insert_free_list, .-zftl_insert_free_list
	.section	.text.zftl_insert_data_list,"ax",@progbits
	.align	2
	.global	zftl_insert_data_list
	.type	zftl_insert_data_list, %function
zftl_insert_data_list:
	and	w1, w0, 65535
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x1, uxth 2
	ldrb	w2, [x0, 2]
	and	w2, w2, 224
	cmp	w2, 64
	bne	.L885
	adrp	x2, .LANCHOR103
	adrp	x0, .LANCHOR101
	add	x2, x2, :lo12:.LANCHOR103
	add	x0, x0, :lo12:.LANCHOR101
.L888:
	b	_insert_data_list
.L885:
	cmp	w2, 96
	bne	.L886
	adrp	x2, .LANCHOR105
	adrp	x0, .LANCHOR96
	add	x2, x2, :lo12:.LANCHOR105
	add	x0, x0, :lo12:.LANCHOR96
	b	.L888
.L886:
	cmp	w2, 160
	bne	.L884
	adrp	x2, .LANCHOR97
	adrp	x0, .LANCHOR98
	add	x2, x2, :lo12:.LANCHOR97
	add	x0, x0, :lo12:.LANCHOR98
	b	.L888
.L884:
	ret
	.size	zftl_insert_data_list, .-zftl_insert_data_list
	.section	.text.zftl_gc_get_free_sblk,"ax",@progbits
	.align	2
	.global	zftl_gc_get_free_sblk
	.type	zftl_gc_get_free_sblk, %function
zftl_gc_get_free_sblk:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR12
	stp	x21, x22, [sp, 32]
	and	w21, w0, 65535
	ldr	x0, [x20, #:lo12:.LANCHOR12]
	and	w22, w1, 65535
	ldrh	w19, [x0, 588]
	mov	w0, 65535
	cmp	w19, w0
	beq	.L890
	cbnz	w21, .L890
	mov	w1, w19
	adrp	x0, .LC59
	add	x0, x0, :lo12:.LC59
	bl	printf
	ldr	x0, [x20, #:lo12:.LANCHOR12]
	mov	w1, -1
	strh	w1, [x0, 588]
.L891:
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L890:
	adrp	x2, .LANCHOR111
	adrp	x20, .LANCHOR113
	ldrh	w0, [x2, #:lo12:.LANCHOR111]
	ldrh	w1, [x20, #:lo12:.LANCHOR113]
	cmp	w0, w1
	bcc	.L892
	adrp	x3, .LANCHOR109
	ldrh	w3, [x3, #:lo12:.LANCHOR109]
	cmp	w3, w0
	bls	.L893
	cbz	w1, .L893
.L892:
	cbnz	w21, .L894
	lsr	w1, w1, 2
.L895:
	adrp	x0, .LANCHOR114
	add	x2, x20, :lo12:.LANCHOR113
	add	x0, x0, :lo12:.LANCHOR114
.L910:
	bl	_list_pop_index_node
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	bne	.L898
	adrp	x0, .LANCHOR109
	ldrh	w5, [x20, #:lo12:.LANCHOR113]
	mov	w2, w22
	mov	w1, w19
	ldrh	w4, [x0, #:lo12:.LANCHOR109]
	adrp	x0, .LANCHOR110
	ldr	x3, [x0, #:lo12:.LANCHOR110]
	adrp	x0, .LC60
	add	x0, x0, :lo12:.LC60
	bl	printf
.L898:
	cbz	w21, .L891
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L891
	adrp	x4, .LANCHOR11
	adrp	x1, .LANCHOR9
	uxtw	x3, w19
	ldr	x1, [x1, #:lo12:.LANCHOR9]
	lsl	x0, x3, 2
	ldr	x6, [x4, #:lo12:.LANCHOR11]
	add	x2, x1, x0
	ldr	w4, [x1, x0]
	ldrh	w6, [x6, x3, lsl 1]
	ldrb	w2, [x2, 2]
	ldrh	w5, [x1, x0]
	ubfx	x4, x4, 11, 8
	mov	w1, w19
	adrp	x0, .LC61
	ubfx	x3, x2, 3, 2
	and	w5, w5, 2047
	ubfx	x2, x2, 5, 3
	add	x0, x0, :lo12:.LC61
	bl	printf
	b	.L891
.L894:
	mov	w1, 7
	mul	w1, w0, w1
	lsr	w1, w1, 3
	b	.L895
.L893:
	lsr	w1, w0, 3
	cmp	w21, 0
	adrp	x0, .LANCHOR112
	csel	w1, w1, wzr, ne
	add	x2, x2, :lo12:.LANCHOR111
	add	x0, x0, :lo12:.LANCHOR112
	b	.L910
	.size	zftl_gc_get_free_sblk, .-zftl_gc_get_free_sblk
	.section	.text.zftl_get_free_sblk,"ax",@progbits
	.align	2
	.global	zftl_get_free_sblk
	.type	zftl_get_free_sblk, %function
zftl_get_free_sblk:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w1, 65535
	str	x21, [sp, 32]
	cmp	w20, 5
	bne	.L912
	adrp	x2, .LANCHOR111
	adrp	x0, .LANCHOR113
	ldrh	w3, [x2, #:lo12:.LANCHOR111]
	ldrh	w1, [x0, #:lo12:.LANCHOR113]
	cmp	w3, w1
	bcc	.L913
	adrp	x4, .LANCHOR109
	ldrh	w4, [x4, #:lo12:.LANCHOR109]
	cmp	w4, w3
	bls	.L914
	cbz	w1, .L914
.L913:
	add	x2, x0, :lo12:.LANCHOR113
	lsr	w1, w1, 1
.L933:
	adrp	x0, .LANCHOR114
	add	x0, x0, :lo12:.LANCHOR114
	b	.L932
.L914:
	adrp	x0, .LANCHOR112
	add	x2, x2, :lo12:.LANCHOR111
	add	x0, x0, :lo12:.LANCHOR112
	mov	w1, 0
.L932:
	bl	_list_pop_index_node
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	bne	.L917
	adrp	x0, .LANCHOR113
	mov	w2, w20
	mov	w1, w19
	ldrh	w5, [x0, #:lo12:.LANCHOR113]
	adrp	x0, .LANCHOR109
	ldrh	w4, [x0, #:lo12:.LANCHOR109]
	adrp	x0, .LANCHOR110
	ldr	x3, [x0, #:lo12:.LANCHOR110]
	adrp	x0, .LC60
	add	x0, x0, :lo12:.LC60
	bl	printf
	b	.L917
.L912:
	adrp	x21, .LANCHOR12
	and	w3, w0, 65535
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	ldrh	w19, [x0, 590]
	mov	w0, 65535
	cmp	w19, w0
	beq	.L916
	cmp	w20, 1
	beq	.L916
	mov	w1, w19
	adrp	x0, .LC62
	add	x0, x0, :lo12:.LC62
	bl	printf
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	mov	w1, -1
	strh	w1, [x0, 590]
.L917:
	mov	w0, w19
	ldr	x21, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
.L916:
	adrp	x2, .LANCHOR109
	adrp	x4, .LANCHOR113
	ldrh	w0, [x2, #:lo12:.LANCHOR109]
	ldrh	w1, [x4, #:lo12:.LANCHOR113]
	cmp	w0, w1
	bcc	.L918
	adrp	x5, .LANCHOR111
	ldrh	w5, [x5, #:lo12:.LANCHOR111]
	cmp	w5, w0
	bls	.L919
	cbz	w1, .L919
.L918:
	bl	get_ink_scaned_blk
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	bne	.L917
	cmp	w20, 1
	bne	.L920
	ldrh	w3, [x4, #:lo12:.LANCHOR113]
	lsr	w3, w3, 1
.L920:
	add	x2, x4, :lo12:.LANCHOR113
	mov	w1, w3
	b	.L933
.L919:
	lsr	w0, w0, 1
	cmp	w20, 1
	csel	w3, w0, w3, eq
	add	x2, x2, :lo12:.LANCHOR109
	adrp	x0, .LANCHOR110
	mov	w1, w3
	add	x0, x0, :lo12:.LANCHOR110
	b	.L932
	.size	zftl_get_free_sblk, .-zftl_get_free_sblk
	.section	.text.zftl_remove_data_node,"ax",@progbits
	.align	2
	.global	zftl_remove_data_node
	.type	zftl_remove_data_node, %function
zftl_remove_data_node:
	and	w1, w0, 65535
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x1, uxth 2
	ldrb	w2, [x0, 2]
	and	w2, w2, 224
	cmp	w2, 64
	bne	.L935
	adrp	x2, .LANCHOR103
	adrp	x0, .LANCHOR101
	add	x2, x2, :lo12:.LANCHOR103
	add	x0, x0, :lo12:.LANCHOR101
.L938:
	b	_list_remove_node
.L935:
	cmp	w2, 96
	bne	.L936
	adrp	x2, .LANCHOR105
	adrp	x0, .LANCHOR96
	add	x2, x2, :lo12:.LANCHOR105
	add	x0, x0, :lo12:.LANCHOR96
	b	.L938
.L936:
	cmp	w2, 160
	bne	.L934
	adrp	x2, .LANCHOR97
	adrp	x0, .LANCHOR98
	add	x2, x2, :lo12:.LANCHOR97
	add	x0, x0, :lo12:.LANCHOR98
	b	.L938
.L934:
	ret
	.size	zftl_remove_data_node, .-zftl_remove_data_node
	.section	.text.zftl_remove_free_node,"ax",@progbits
	.align	2
	.global	zftl_remove_free_node
	.type	zftl_remove_free_node, %function
zftl_remove_free_node:
	and	w1, w0, 65535
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x1, uxth 2
	ldrb	w0, [x0, 2]
	ands	w0, w0, 24
	bne	.L940
	adrp	x2, .LANCHOR109
	adrp	x0, .LANCHOR110
	add	x2, x2, :lo12:.LANCHOR109
	add	x0, x0, :lo12:.LANCHOR110
.L942:
	b	_list_remove_node
.L940:
	cmp	w0, 16
	bne	.L941
	adrp	x2, .LANCHOR111
	adrp	x0, .LANCHOR112
	add	x2, x2, :lo12:.LANCHOR111
	add	x0, x0, :lo12:.LANCHOR112
	b	.L942
.L941:
	adrp	x2, .LANCHOR113
	adrp	x0, .LANCHOR114
	add	x2, x2, :lo12:.LANCHOR113
	add	x0, x0, :lo12:.LANCHOR114
	b	.L942
	.size	zftl_remove_free_node, .-zftl_remove_free_node
	.section	.text.zftl_list_update_data_list,"ax",@progbits
	.align	2
	.global	zftl_list_update_data_list
	.type	zftl_list_update_data_list, %function
zftl_list_update_data_list:
	and	w1, w0, 65535
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x1, uxth 2
	ldrb	w2, [x0, 2]
	and	w2, w2, 224
	cmp	w2, 64
	bne	.L944
	adrp	x2, .LANCHOR103
	adrp	x0, .LANCHOR101
	add	x2, x2, :lo12:.LANCHOR103
	add	x0, x0, :lo12:.LANCHOR101
.L947:
	b	_list_update_data_list
.L944:
	cmp	w2, 96
	bne	.L945
	adrp	x2, .LANCHOR105
	adrp	x0, .LANCHOR96
	add	x2, x2, :lo12:.LANCHOR105
	add	x0, x0, :lo12:.LANCHOR96
	b	.L947
.L945:
	cmp	w2, 160
	bne	.L943
	adrp	x2, .LANCHOR97
	adrp	x0, .LANCHOR98
	add	x2, x2, :lo12:.LANCHOR97
	add	x0, x0, :lo12:.LANCHOR98
	b	.L947
.L943:
	ret
	.size	zftl_list_update_data_list, .-zftl_list_update_data_list
	.section	.text.print_list_info,"ax",@progbits
	.align	2
	.global	print_list_info
	.type	print_list_info, %function
print_list_info:
	sub	sp, sp, #96
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	ldrh	w2, [x1]
	ldr	x1, [x0]
	stp	x19, x20, [sp, 48]
	mov	x19, x0
	stp	x21, x22, [sp, 64]
	adrp	x0, .LC63
	stp	x23, x24, [sp, 80]
	add	x0, x0, :lo12:.LC63
	bl	printf
	ldr	x19, [x19]
	cbz	x19, .L948
	mov	x24, -6148914691236517206
	adrp	x22, .LC64
	adrp	x21, .LANCHOR115
	add	x22, x22, :lo12:.LC64
	add	x21, x21, :lo12:.LANCHOR115
	mov	w20, 0
	adrp	x23, .LANCHOR4
	movk	x24, 0xaaab, lsl 0
.L952:
	ldr	x2, [x23, #:lo12:.LANCHOR4]
	adrp	x1, .LANCHOR9
	adrp	x8, .LANCHOR11
	ldrh	w5, [x19, 4]
	sub	x2, x19, x2
	ldr	x1, [x1, #:lo12:.LANCHOR9]
	asr	x2, x2, 1
	ldr	x8, [x8, #:lo12:.LANCHOR11]
	ldrh	w4, [x19, 2]
	mul	x2, x2, x24
	and	x7, x2, 65535
	and	w2, w2, 65535
	lsl	x0, x7, 2
	add	x3, x1, x0
	ldrh	w7, [x8, x7, lsl 1]
	ldrb	w6, [x3, 2]
	ldrh	w3, [x19]
	str	w7, [sp, 16]
	ldrh	w7, [x1, x0]
	and	w7, w7, 2047
	str	w7, [sp, 8]
	ubfx	x7, x6, 3, 2
	ubfx	x6, x6, 5, 3
	ldr	w0, [x1, x0]
	mov	w1, w20
	ubfx	x0, x0, 11, 8
	str	w0, [sp]
	mov	x0, x22
	bl	printf
	ldrh	w19, [x19]
	mov	w0, 65535
	cmp	w19, w0
	beq	.L948
	ldr	x0, [x23, #:lo12:.LANCHOR4]
	mov	w1, 6
	add	w20, w20, 1
	and	w20, w20, 65535
	umaddl	x19, w19, w1, x0
	ldrh	w0, [x21]
	cmp	w0, w20
	bcs	.L952
.L948:
	ldp	x19, x20, [sp, 48]
	ldp	x21, x22, [sp, 64]
	ldp	x23, x24, [sp, 80]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 96
	ret
	.size	print_list_info, .-print_list_info
	.section	.text.dump_all_list_info,"ax",@progbits
	.align	2
	.global	dump_all_list_info
	.type	dump_all_list_info, %function
dump_all_list_info:
	stp	x29, x30, [sp, -16]!
	adrp	x1, .LANCHOR109
	adrp	x0, .LANCHOR110
	add	x1, x1, :lo12:.LANCHOR109
	add	x29, sp, 0
	add	x0, x0, :lo12:.LANCHOR110
	bl	print_list_info
	adrp	x1, .LANCHOR111
	adrp	x0, .LANCHOR112
	add	x1, x1, :lo12:.LANCHOR111
	add	x0, x0, :lo12:.LANCHOR112
	bl	print_list_info
	adrp	x1, .LANCHOR113
	adrp	x0, .LANCHOR114
	add	x1, x1, :lo12:.LANCHOR113
	add	x0, x0, :lo12:.LANCHOR114
	bl	print_list_info
	adrp	x1, .LANCHOR103
	adrp	x0, .LANCHOR101
	add	x1, x1, :lo12:.LANCHOR103
	add	x0, x0, :lo12:.LANCHOR101
	bl	print_list_info
	adrp	x1, .LANCHOR105
	adrp	x0, .LANCHOR96
	add	x1, x1, :lo12:.LANCHOR105
	add	x0, x0, :lo12:.LANCHOR96
	bl	print_list_info
	ldp	x29, x30, [sp], 16
	adrp	x1, .LANCHOR97
	adrp	x0, .LANCHOR98
	add	x1, x1, :lo12:.LANCHOR97
	add	x0, x0, :lo12:.LANCHOR98
	b	print_list_info
	.size	dump_all_list_info, .-dump_all_list_info
	.section	.text.ftl_tmp_into_update,"ax",@progbits
	.align	2
	.global	ftl_tmp_into_update
	.type	ftl_tmp_into_update, %function
ftl_tmp_into_update:
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 16]
	cmp	w1, 2048
	bls	.L957
	ldr	w2, [x0, 20]
	add	w2, w2, w1, lsr 11
	and	w1, w1, 2047
	stp	w1, w2, [x0, 16]
.L957:
	ldr	w1, [x0, 24]
	cmp	w1, 2048
	bls	.L958
	ldr	w2, [x0, 28]
	add	w2, w2, w1, lsr 11
	and	w1, w1, 2047
	stp	w1, w2, [x0, 24]
.L958:
	ldr	w1, [x0, 32]
	cmp	w1, 1024
	bls	.L959
	ldr	w2, [x0, 36]
	add	w2, w2, w1, lsr 10
	and	w1, w1, 1023
	stp	w1, w2, [x0, 32]
.L959:
	ldr	w1, [x0, 40]
	cmp	w1, 1024
	bls	.L956
	ldr	w2, [x0, 44]
	add	w2, w2, w1, lsr 10
	and	w1, w1, 1023
	stp	w1, w2, [x0, 40]
.L956:
	ret
	.size	ftl_tmp_into_update, .-ftl_tmp_into_update
	.section	.text.ftl_get_blk_list_in_sblk,"ax",@progbits
	.align	2
	.global	ftl_get_blk_list_in_sblk
	.type	ftl_get_blk_list_in_sblk, %function
ftl_get_blk_list_in_sblk:
	adrp	x2, .LANCHOR9
	and	w0, w0, 65535
	mov	w7, 24
	adrp	x8, .LANCHOR80
	ldr	x2, [x2, #:lo12:.LANCHOR9]
	add	x8, x8, :lo12:.LANCHOR80
	mov	w3, 0
	add	x2, x2, x0, uxth 2
	ldrb	w13, [x2, 3]
	adrp	x2, .LANCHOR85
	ldrb	w11, [x2, #:lo12:.LANCHOR85]
	adrp	x2, .LANCHOR81
	ldrb	w6, [x2, #:lo12:.LANCHOR81]
	adrp	x2, .LANCHOR31
	ldrb	w2, [x2, #:lo12:.LANCHOR31]
	sub	w7, w7, w2
	and	w2, w6, 65535
	mul	w0, w0, w2
	sub	w2, w2, #1
	sxth	w5, w2
	and	w4, w0, 65535
	mov	w0, 0
.L962:
	cmp	w3, w11
	blt	.L966
	sxtw	x2, w0
	mov	w3, -1
.L967:
	cmp	w11, w2
	bgt	.L968
	ret
.L966:
	asr	w2, w13, w3
	tbnz	x2, 0, .L963
	sdiv	w2, w3, w6
	ldrh	w10, [x8]
	sbfiz	x12, x0, 1, 32
	cmp	w6, 1
	sub	w10, w7, w10
	lsl	w2, w2, w10
	add	w2, w4, w2
	and	w2, w2, 65535
	bhi	.L964
.L969:
	add	w0, w0, 1
	strh	w2, [x1, x12]
.L963:
	add	w3, w3, 1
	b	.L962
.L964:
	and	w10, w5, w3
	add	w2, w2, w10
	b	.L969
.L968:
	strh	w3, [x1, x2, lsl 1]
	add	x2, x2, 1
	b	.L967
	.size	ftl_get_blk_list_in_sblk, .-ftl_get_blk_list_in_sblk
	.section	.text.ftl_ink_check_sblk,"ax",@progbits
	.align	2
	.global	ftl_ink_check_sblk
	.type	ftl_ink_check_sblk, %function
ftl_ink_check_sblk:
	ret
	.size	ftl_ink_check_sblk, .-ftl_ink_check_sblk
	.section	.text.ftl_alloc_sblk,"ax",@progbits
	.align	2
	.global	ftl_alloc_sblk
	.type	ftl_alloc_sblk, %function
ftl_alloc_sblk:
	stp	x29, x30, [sp, -64]!
	cmp	w0, 5
	add	x29, sp, 0
	str	x23, [sp, 48]
	and	w23, w0, 65535
	stp	x19, x20, [sp, 16]
	mov	w1, w23
	stp	x21, x22, [sp, 32]
	cset	w20, eq
	mov	w21, w0
	mov	w0, 0
	bl	zftl_get_free_sblk
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	beq	.L973
	adrp	x0, .LANCHOR9
	mov	w22, w19
	lsl	w20, w20, 1
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x19, x0, x19, uxth 2
	ldrb	w0, [x19, 2]
	tst	w0, 224
	beq	.L974
	adrp	x1, .LANCHOR116
	adrp	x0, .LC0
	mov	w2, 1014
	add	x1, x1, :lo12:.LANCHOR116
	add	x0, x0, :lo12:.LC0
	bl	printf
.L974:
	ldrb	w0, [x19, 2]
	bfi	w0, w21, 5, 3
	ubfx	x1, x0, 3, 2
	orr	w1, w20, w1
	bfi	w0, w1, 3, 2
	strb	w0, [x19, 2]
	and	w1, w0, 24
	cmp	w1, 24
	bne	.L975
	cbnz	w20, .L975
	mov	w1, 1
	bfi	w0, w1, 3, 2
	strb	w0, [x19, 2]
.L975:
	mov	w0, w22
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L973:
	mov	w1, w23
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	b	zftl_get_free_sblk
	.size	ftl_alloc_sblk, .-ftl_alloc_sblk
	.section	.text.ftl_erase_phy_blk,"ax",@progbits
	.align	2
	.global	ftl_erase_phy_blk
	.type	ftl_erase_phy_blk, %function
ftl_erase_phy_blk:
	stp	x29, x30, [sp, -48]!
	and	w0, w0, 65535
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w21, w1
	adrp	x1, .LANCHOR31
	stp	x19, x20, [sp, 16]
	adrp	x22, .LANCHOR117
	ldrb	w19, [x1, #:lo12:.LANCHOR31]
	mov	w1, 24
	sub	w19, w1, w19
	adrp	x1, .LANCHOR80
	ldrh	w1, [x1, #:lo12:.LANCHOR80]
	sub	w1, w19, w1
	mov	w19, 1
	lsl	w19, w19, w1
	sub	w19, w19, #1
	and	w19, w19, w0
	asr	w20, w0, w1
	adrp	x0, .LANCHOR86
	sxth	w19, w19
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L982
	adrp	x0, .LANCHOR87
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cbnz	w0, .L982
	ldrh	w2, [x22, #:lo12:.LANCHOR117]
	cmp	w21, 0
	cset	w1, eq
	mov	w0, w20
	mul	w2, w2, w19
	bl	flash_erase_block_en
.L982:
	ldrh	w2, [x22, #:lo12:.LANCHOR117]
	mov	w1, w21
	mov	w0, w20
	ldp	x21, x22, [sp, 32]
	mul	w2, w2, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	flash_erase_block_en
	.size	ftl_erase_phy_blk, .-ftl_erase_phy_blk
	.section	.text.ftl_erase_sblk,"ax",@progbits
	.align	2
	.global	ftl_erase_sblk
	.type	ftl_erase_sblk, %function
ftl_erase_sblk:
	stp	x29, x30, [sp, -176]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR9
	stp	x25, x26, [sp, 64]
	and	w26, w0, 65535
	ldr	x0, [x23, #:lo12:.LANCHOR9]
	adrp	x25, .LANCHOR118
	stp	x21, x22, [sp, 32]
	ubfiz	x22, x26, 2, 16
	add	x0, x0, x22
	stp	x27, x28, [sp, 80]
	stp	x19, x20, [sp, 16]
	adrp	x24, .LANCHOR81
	mov	w20, w1
	add	x25, x25, :lo12:.LANCHOR118
	ldrb	w28, [x0, 3]
	add	x24, x24, :lo12:.LANCHOR81
	add	x27, x29, 112
	mov	w19, 0
.L988:
	ldrb	w0, [x25]
	cmp	w19, w0
	bge	.L999
	ldrb	w1, [x24]
	adrp	x0, .LANCHOR117
	mov	w21, 0
	ldrh	w3, [x0, #:lo12:.LANCHOR117]
	sub	w4, w1, #1
	mov	w0, 0
	mul	w6, w19, w1
	mul	w5, w26, w1
	b	.L1000
.L990:
	add	w2, w0, w6
	asr	w2, w28, w2
	tbnz	x2, 0, .L989
	and	w2, w0, w4
	add	w2, w2, w5
	mul	w2, w2, w3
	str	w2, [x27, w21, sxtw 2]
	add	w21, w21, 1
.L989:
	add	w0, w0, 1
.L1000:
	cmp	w0, w1
	blt	.L990
	cmp	w1, 4
	bne	.L991
	mov	x3, 0
.L992:
	cmp	w21, w3
	bgt	.L993
.L994:
	add	w19, w19, 1
	b	.L988
.L993:
	ldr	w2, [x27, x3, lsl 2]
	mov	w1, w20
	str	x3, [x29, 104]
	mov	w0, w19
	bl	flash_erase_block_en
	ldr	x3, [x29, 104]
	add	x3, x3, 1
	b	.L992
.L991:
	cmp	w21, 2
	bne	.L995
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L996
	adrp	x0, .LANCHOR87
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cbnz	w0, .L996
	ldp	w2, w3, [x29, 112]
	cmp	w20, 0
	cset	w1, eq
	mov	w0, w19
	bl	flash_erase_duplane_block
.L996:
	ldp	w2, w3, [x29, 112]
	mov	w1, w20
	mov	w0, w19
	bl	flash_erase_duplane_block
	b	.L994
.L995:
	cmp	w21, 1
	bne	.L994
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L998
	adrp	x0, .LANCHOR87
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cbnz	w0, .L998
	ldr	w2, [x29, 112]
	cmp	w20, 0
	cset	w1, eq
	mov	w0, w19
	bl	flash_erase_block_en
.L998:
	ldr	w2, [x29, 112]
	mov	w1, w20
	mov	w0, w19
	bl	flash_erase_block_en
	b	.L994
.L999:
	adrp	x2, .LANCHOR69
	ldr	x3, [x23, #:lo12:.LANCHOR9]
	cbnz	w20, .L1001
	ldrh	w1, [x3, x22]
	add	w0, w1, 1
	and	w0, w0, 2047
	bfi	w1, w0, 0, 11
	strh	w1, [x3, x22]
	ldr	x1, [x2, #:lo12:.LANCHOR69]
	ldr	w2, [x1, 84]
	add	w2, w2, 1
	str	w2, [x1, 84]
	ldrh	w2, [x1, 96]
	cmp	w2, w0
	bge	.L1003
	strh	w0, [x1, 96]
.L1003:
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 176
	ret
.L1001:
	ldr	w1, [x3, x22]
	ubfx	x0, x1, 11, 8
	add	w0, w0, 1
	and	w0, w0, 255
	bfi	w1, w0, 11, 8
	str	w1, [x3, x22]
	and	w0, w0, 65535
	ldr	x1, [x2, #:lo12:.LANCHOR69]
	ldr	w2, [x1, 80]
	add	w2, w2, 1
	str	w2, [x1, 80]
	ldrh	w2, [x1, 98]
	cmp	w2, w0
	bcs	.L1003
	strh	w0, [x1, 98]
	b	.L1003
	.size	ftl_erase_sblk, .-ftl_erase_sblk
	.section	.text.ftl_alloc_sys_blk,"ax",@progbits
	.align	2
	.global	ftl_alloc_sys_blk
	.type	ftl_alloc_sys_blk, %function
ftl_alloc_sys_blk:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR69
	add	x29, sp, 0
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	ldrh	w2, [x1, 136]
	str	x19, [sp, 16]
	mov	x19, x0
	cmp	w2, 63
	bls	.L1013
	strh	wzr, [x1, 136]
.L1013:
	ldrh	w0, [x1, 112]
	cbnz	w0, .L1014
	adrp	x1, .LANCHOR119
	adrp	x0, .LC0
	mov	w2, 1364
	add	x1, x1, :lo12:.LANCHOR119
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1014:
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	mov	w5, 65535
.L1017:
	ldrh	w2, [x1, 136]
.L1015:
	mov	w3, w2
	cmp	w2, 63
	ble	.L1016
	strh	wzr, [x1, 136]
	b	.L1017
.L1016:
	add	x4, x2, 1
	add	x0, x1, x4, lsl 1
	ldrh	w0, [x0, 158]
	cmp	w0, w5
	bne	.L1020
	mov	x2, x4
	b	.L1015
.L1020:
	add	x3, x1, x3, sxtw 1
	mov	w4, -1
	ldr	x19, [sp, 16]
	strh	w4, [x3, 160]
	strh	w2, [x1, 136]
	ldrh	w2, [x1, 112]
	sub	w2, w2, #1
	strh	w2, [x1, 112]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_alloc_sys_blk, .-ftl_alloc_sys_blk
	.section	.text.ftl_free_sys_blk,"ax",@progbits
	.align	2
	.global	ftl_free_sys_blk
	.type	ftl_free_sys_blk, %function
ftl_free_sys_blk:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 65535
	adrp	x0, .LANCHOR69
	mov	x19, x0
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	ldrh	w2, [x1, 138]
	cmp	w2, 63
	bls	.L1023
	strh	wzr, [x1, 138]
.L1023:
	ldrh	w0, [x1, 112]
	cmp	w0, 63
	bls	.L1024
	adrp	x1, .LANCHOR120
	adrp	x0, .LC0
	mov	w2, 1391
	add	x1, x1, :lo12:.LANCHOR120
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1024:
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w4, 65535
.L1027:
	ldrh	w1, [x0, 138]
.L1025:
	mov	w2, w1
	cmp	w1, 63
	ble	.L1026
	strh	wzr, [x0, 138]
	b	.L1027
.L1026:
	add	x3, x1, 1
	add	x5, x0, x3, lsl 1
	ldrh	w5, [x5, 158]
	cmp	w5, w4
	bne	.L1028
	add	x2, x0, x2, sxtw 1
	strh	w20, [x2, 160]
	strh	w1, [x0, 138]
	ldrh	w1, [x0, 112]
	ldp	x19, x20, [sp, 16]
	add	w1, w1, 1
	strh	w1, [x0, 112]
	ldp	x29, x30, [sp], 32
	ret
.L1028:
	mov	x1, x3
	b	.L1025
	.size	ftl_free_sys_blk, .-ftl_free_sys_blk
	.section	.text.ftl_info_data_recovery,"ax",@progbits
	.align	2
	.global	ftl_info_data_recovery
	.type	ftl_info_data_recovery, %function
ftl_info_data_recovery:
	ldrh	w2, [x0]
	mov	w1, 65535
	cmp	w2, w1
	beq	.L1041
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR9
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ubfiz	x19, x2, 2, 16
	ldr	x20, [x1, #:lo12:.LANCHOR9]
	str	x21, [sp, 32]
	add	x21, x20, x19
	ldrb	w1, [x21, 2]
	tst	w1, 224
	bne	.L1031
	ldrb	w0, [x0, 4]
	bfi	w1, w0, 5, 3
	strb	w1, [x21, 2]
	mov	w0, w2
	bl	zftl_remove_free_node
	ldrb	w0, [x21, 2]
	adrp	x1, .LANCHOR69
	ldr	x3, [x1, #:lo12:.LANCHOR69]
	tbz	x0, 3, .L1035
	ldrh	w2, [x3, 116]
	sub	w2, w2, #1
	strh	w2, [x3, 116]
.L1036:
	and	w0, w0, 224
	cmp	w0, 160
	bne	.L1038
	ldr	w0, [x20, x19]
	ldr	x1, [x1, #:lo12:.LANCHOR69]
	ubfx	x2, x0, 11, 8
	add	w2, w2, 1
	bfi	w0, w2, 11, 8
	str	w0, [x20, x19]
	ldrh	w0, [x1, 120]
	sub	w0, w0, #1
	strh	w0, [x1, 120]
.L1031:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1035:
	tst	w0, 24
	bne	.L1037
	ldrh	w2, [x3, 114]
	sub	w2, w2, #1
	strh	w2, [x3, 114]
	b	.L1036
.L1037:
	ldrh	w2, [x3, 118]
	sub	w2, w2, #1
	strh	w2, [x3, 118]
	b	.L1036
.L1038:
	ldrh	w2, [x20, x19]
	cmp	w0, 64
	add	w3, w2, 1
	bfi	w2, w3, 0, 11
	strh	w2, [x20, x19]
	bne	.L1039
	ldr	x1, [x1, #:lo12:.LANCHOR69]
	ldrh	w0, [x1, 122]
	sub	w0, w0, #1
	strh	w0, [x1, 122]
	b	.L1031
.L1039:
	cmp	w0, 96
	bne	.L1031
	ldr	x1, [x1, #:lo12:.LANCHOR69]
	ldrh	w0, [x1, 124]
	sub	w0, w0, #1
	strh	w0, [x1, 124]
	b	.L1031
.L1041:
	ret
	.size	ftl_info_data_recovery, .-ftl_info_data_recovery
	.section	.text.ftl_get_ppa_from_index,"ax",@progbits
	.align	2
	.global	ftl_get_ppa_from_index
	.type	ftl_get_ppa_from_index, %function
ftl_get_ppa_from_index:
	stp	x29, x30, [sp, -32]!
	adrp	x1, .LANCHOR12
	adrp	x3, .LANCHOR85
	and	w0, w0, 65535
	add	x29, sp, 0
	ldr	x2, [x1, #:lo12:.LANCHOR12]
	adrp	x1, .LANCHOR100
	ldrb	w3, [x3, #:lo12:.LANCHOR85]
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	stp	x19, x20, [sp, 16]
	mul	w1, w1, w3
	cmp	w0, w1
	bge	.L1045
	add	x2, x2, 16
.L1046:
	ldrb	w1, [x2, 9]
	sdiv	w19, w0, w1
	msub	w0, w19, w1, w0
	add	x0, x2, x0, uxth 1
	ldrh	w20, [x0, 16]
	mov	w0, 65535
	cmp	w20, w0
	bne	.L1047
	adrp	x1, .LANCHOR121
	adrp	x0, .LC0
	mov	w2, 1950
	add	x1, x1, :lo12:.LANCHOR121
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1047:
	adrp	x0, .LANCHOR117
	ldrh	w0, [x0, #:lo12:.LANCHOR117]
	madd	w0, w0, w20, w19
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1045:
	sub	w0, w0, w1
	add	x2, x2, 48
	and	w0, w0, 65535
	b	.L1046
	.size	ftl_get_ppa_from_index, .-ftl_get_ppa_from_index
	.section	.text.lpa_hash_get_ppa,"ax",@progbits
	.align	2
	.global	lpa_hash_get_ppa
	.type	lpa_hash_get_ppa, %function
lpa_hash_get_ppa:
	and	x2, x0, 255
	adrp	x1, .LANCHOR122
	add	x1, x1, :lo12:.LANCHOR122
	mov	w3, 65535
	ldrh	w1, [x1, x2, lsl 1]
	adrp	x2, .LANCHOR123
	ldr	x4, [x2, #:lo12:.LANCHOR123]
	adrp	x2, .LANCHOR124
	ldr	x5, [x2, #:lo12:.LANCHOR124]
.L1050:
	cmp	w1, w3
	bne	.L1052
	mov	w0, -1
	ret
.L1052:
	uxtw	x2, w1
	ldr	w6, [x4, x2, lsl 2]
	cmp	w0, w6
	bne	.L1051
	mov	w0, w1
	b	ftl_get_ppa_from_index
.L1051:
	ldrh	w1, [x5, x2, lsl 1]
	b	.L1050
	.size	lpa_hash_get_ppa, .-lpa_hash_get_ppa
	.section	.text.ftl_get_new_free_page,"ax",@progbits
	.align	2
	.global	ftl_get_new_free_page
	.type	ftl_get_new_free_page, %function
ftl_get_new_free_page:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	ldrh	w1, [x0]
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 65535
	cmp	w1, w0
	bne	.L1054
	adrp	x1, .LANCHOR125
	adrp	x0, .LC0
	mov	w2, 2093
	add	x1, x1, :lo12:.LANCHOR125
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1054:
	adrp	x0, .LANCHOR100
	ldrh	w1, [x19, 2]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w1, w0
	bne	.L1055
	adrp	x1, .LANCHOR125
	adrp	x0, .LC0
	mov	w2, 2094
	add	x1, x1, :lo12:.LANCHOR125
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1055:
	ldrh	w0, [x19, 6]
	cbnz	w0, .L1056
	adrp	x1, .LANCHOR125
	adrp	x0, .LC0
	mov	w2, 2095
	add	x1, x1, :lo12:.LANCHOR125
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1056:
	ldrb	w0, [x19, 5]
	mov	w2, 65535
	add	x0, x0, 8
	ldrh	w3, [x19, x0, lsl 1]
	adrp	x0, .LANCHOR85
	ldrb	w4, [x0, #:lo12:.LANCHOR85]
.L1057:
	cmp	w3, w2
	ldrb	w1, [x19, 5]
	beq	.L1059
	adrp	x0, .LANCHOR117
	add	w1, w1, 1
	and	w1, w1, 255
	ldrh	w2, [x19, 2]
	ldrh	w0, [x0, #:lo12:.LANCHOR117]
	cmp	w4, w1
	strb	w1, [x19, 5]
	mul	w0, w0, w3
	ldrh	w3, [x19, 6]
	sub	w3, w3, #1
	strh	w3, [x19, 6]
	ldrh	w3, [x19, 10]
	orr	w0, w0, w2
	add	w3, w3, 1
	strh	w3, [x19, 10]
	bne	.L1053
	add	w2, w2, 1
	strb	wzr, [x19, 5]
	strh	w2, [x19, 2]
.L1053:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1059:
	add	w1, w1, 1
	and	w1, w1, 255
	strb	w1, [x19, 5]
	cmp	w1, w4
	bne	.L1058
	ldrh	w0, [x19, 2]
	strb	wzr, [x19, 5]
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L1058:
	ldrb	w0, [x19, 5]
	add	x0, x0, 8
	ldrh	w3, [x19, x0, lsl 1]
	b	.L1057
	.size	ftl_get_new_free_page, .-ftl_get_new_free_page
	.section	.text.ftl_ext_alloc_new_blk,"ax",@progbits
	.align	2
	.global	ftl_ext_alloc_new_blk
	.type	ftl_ext_alloc_new_blk, %function
ftl_ext_alloc_new_blk:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	bl	ftl_alloc_sys_blk
	and	w0, w0, 65535
	mov	w1, 65533
	mov	w19, w0
	sub	w0, w0, #1
	cmp	w1, w0, uxth
	bcs	.L1063
	adrp	x1, .LANCHOR126
	adrp	x0, .LC0
	mov	w2, 2130
	add	x1, x1, :lo12:.LANCHOR126
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1063:
	adrp	x20, .LANCHOR69
	mov	w1, 0
	mov	w0, w19
	bl	ftl_erase_phy_blk
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sys_blk
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	strh	w19, [x0, 130]
	strh	wzr, [x0, 140]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_ext_alloc_new_blk, .-ftl_ext_alloc_new_blk
	.section	.text.ftl_total_vpn_update,"ax",@progbits
	.align	2
	.global	ftl_total_vpn_update
	.type	ftl_total_vpn_update, %function
ftl_total_vpn_update:
	adrp	x2, .LANCHOR127
	mov	x3, x2
	ldrh	w1, [x2, #:lo12:.LANCHOR127]
	cmp	w1, 4
	bhi	.L1066
	cbnz	w0, .L1066
	add	w1, w1, 1
	strh	w1, [x2, #:lo12:.LANCHOR127]
	ret
.L1066:
	adrp	x0, .LANCHOR8
	strh	wzr, [x3, #:lo12:.LANCHOR127]
	mov	x1, 0
	mov	w2, 0
	ldrh	w5, [x0, #:lo12:.LANCHOR8]
	adrp	x0, .LANCHOR11
	mov	w8, 65535
	ldr	x6, [x0, #:lo12:.LANCHOR11]
	adrp	x0, .LANCHOR9
	ldr	x7, [x0, #:lo12:.LANCHOR9]
	mov	w0, 0
.L1068:
	cmp	w5, w1, uxth
	bhi	.L1071
	adrp	x1, .LANCHOR12
	ldr	x1, [x1, #:lo12:.LANCHOR12]
	str	w2, [x1, 524]
	adrp	x2, .LANCHOR69
	str	w0, [x1, 528]
	ldr	x2, [x2, #:lo12:.LANCHOR69]
	ldrh	w2, [x2, 120]
	cbz	w2, .L1065
	udiv	w0, w0, w2
	str	w0, [x1, 532]
.L1065:
	ret
.L1071:
	ldrh	w3, [x6, x1, lsl 1]
	cmp	w3, w8
	beq	.L1069
	add	x4, x7, x1, lsl 2
	ldrb	w4, [x4, 2]
	and	w4, w4, 224
	cmp	w4, 160
	bne	.L1070
	add	w0, w0, w3
.L1069:
	add	x1, x1, 1
	b	.L1068
.L1070:
	add	w2, w2, w3
	b	.L1069
	.size	ftl_total_vpn_update, .-ftl_total_vpn_update
	.section	.text.ftl_vpn_update,"ax",@progbits
	.align	2
	.global	ftl_vpn_update
	.type	ftl_vpn_update, %function
ftl_vpn_update:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	and	w19, w0, 65535
	mov	w0, w19
	bl	zftl_list_update_data_list
	adrp	x0, .LANCHOR11
	ubfiz	x19, x19, 1, 16
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrh	w0, [x0, x19]
	cbnz	w0, .L1078
	adrp	x1, .LANCHOR128
	mov	w0, 1
	str	w0, [x1, #:lo12:.LANCHOR128]
.L1076:
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1078:
	mov	w0, 0
	b	.L1076
	.size	ftl_vpn_update, .-ftl_vpn_update
	.section	.text.ftl_vpn_decrement,"ax",@progbits
	.align	2
	.global	ftl_vpn_decrement
	.type	ftl_vpn_decrement, %function
ftl_vpn_decrement:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	beq	.L1081
	adrp	x0, .LANCHOR11
	uxtw	x1, w19
	lsl	x2, x1, 1
	ldr	x3, [x0, #:lo12:.LANCHOR11]
	ldrh	w0, [x3, x2]
	cbnz	w0, .L1082
	adrp	x0, .LANCHOR9
	mov	w2, 0
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x1, x0, x1, lsl 2
	adrp	x0, .LC65
	add	x0, x0, :lo12:.LC65
	ldrb	w3, [x1, 2]
	mov	w1, w19
	ubfx	x3, x3, 5, 3
	bl	printf
.L1087:
	mov	w0, 0
	b	.L1080
.L1082:
	sub	w0, w0, #1
	strh	w0, [x3, x2]
.L1081:
	adrp	x20, .LANCHOR78
	ldrh	w0, [x20, #:lo12:.LANCHOR78]
	cmp	w19, w0
	beq	.L1087
	mov	w1, 65535
	cmp	w0, w1
	bne	.L1084
	strh	w19, [x20, #:lo12:.LANCHOR78]
	b	.L1087
.L1084:
	bl	ftl_vpn_update
	cmp	w0, 0
	adrp	x1, .LANCHOR129
	cset	w0, ne
	ldrh	w3, [x20, #:lo12:.LANCHOR78]
	ldrh	w2, [x1, #:lo12:.LANCHOR129]
	strh	w19, [x20, #:lo12:.LANCHOR78]
	add	w2, w2, 1
	and	w2, w2, 65535
	cmp	w2, 7
	csel	w2, w2, wzr, ls
	strh	w2, [x1, #:lo12:.LANCHOR129]
	and	x2, x2, 65535
	adrp	x1, .LANCHOR79
	add	x1, x1, :lo12:.LANCHOR79
	strh	w3, [x1, x2, lsl 1]
.L1080:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_vpn_decrement, .-ftl_vpn_decrement
	.section	.text.lpa_hash_update_ppa,"ax",@progbits
	.align	2
	.global	lpa_hash_update_ppa
	.type	lpa_hash_update_ppa, %function
lpa_hash_update_ppa:
	adrp	x3, .LANCHOR122
	and	x5, x0, 255
	add	x4, x3, :lo12:.LANCHOR122
	mov	w7, 65535
	and	w2, w2, 65535
	mov	w12, w7
	ldrh	w6, [x4, x5, lsl 1]
	adrp	x4, .LANCHOR123
	ldr	x8, [x4, #:lo12:.LANCHOR123]
	adrp	x4, .LANCHOR124
	ldr	x4, [x4, #:lo12:.LANCHOR124]
.L1090:
	cmp	w6, w12
	beq	.L1094
	uxtw	x11, w6
	lsl	x10, x11, 2
	add	x13, x8, x10
	ldr	w10, [x8, x10]
	cmp	w0, w10
	lsl	x10, x11, 1
	bne	.L1091
	mov	w6, -1
	str	w6, [x13]
	cmp	w7, w12
	bne	.L1092
	add	x6, x3, :lo12:.LANCHOR122
	ldrh	w7, [x4, x10]
	strh	w7, [x6, x5, lsl 1]
.L1093:
	mov	w6, -1
	strh	w6, [x4, x11, lsl 1]
.L1094:
	uxtw	x6, w2
	add	x3, x3, :lo12:.LANCHOR122
	cmn	w1, #1
	str	w0, [x8, x6, lsl 2]
	ldrh	w0, [x3, x5, lsl 1]
	strh	w2, [x3, x5, lsl 1]
	strh	w0, [x4, x6, lsl 1]
	beq	.L1101
	stp	x29, x30, [sp, -16]!
	adrp	x0, .LANCHOR80
	add	x29, sp, 0
	ldrh	w3, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR31
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	lsr	w1, w1, w3
	sub	w0, w0, w2
	sub	w2, w0, w3
	mov	w0, 1
	lsl	w0, w0, w2
	sub	w0, w0, #1
	and	w1, w0, w1
	adrp	x0, .LANCHOR81
	ldrb	w0, [x0, #:lo12:.LANCHOR81]
	udiv	w0, w1, w0
	bl	ftl_vpn_decrement
	mov	w0, -1
	ldp	x29, x30, [sp], 16
	ret
.L1092:
	ldrh	w6, [x4, x10]
	strh	w6, [x4, w7, uxtw 1]
	b	.L1093
.L1091:
	mov	w7, w6
	ldrh	w6, [x4, x10]
	b	.L1090
.L1101:
	mov	w0, -1
	ret
	.size	lpa_hash_update_ppa, .-lpa_hash_update_ppa
	.section	.text.ftl_write_completed,"ax",@progbits
	.align	2
	.global	ftl_write_completed
	.type	ftl_write_completed, %function
ftl_write_completed:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR55
	stp	x19, x20, [sp, 16]
	add	x22, x21, :lo12:.LANCHOR55
	stp	x23, x24, [sp, 48]
	adrp	x20, .LANCHOR64
	mov	w23, 20041
	add	x20, x20, :lo12:.LANCHOR64
	str	x25, [sp, 64]
	movk	w23, 0x444b, lsl 16
	mov	w25, 0
.L1105:
	ldrb	w0, [x20]
	cmp	w0, 255
	bne	.L1116
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L1116:
	add	x1, x21, :lo12:.LANCHOR55
	lsl	x2, x0, 6
	add	x24, x1, x2
	ubfiz	x19, x0, 6, 8
	add	x19, x1, x19
	ldrb	w1, [x1, x2]
	strb	w1, [x20]
	ldr	w1, [x24, 52]
	cmn	w1, #1
	bne	.L1106
	adrp	x1, .LANCHOR130
	ldrb	w1, [x1, #:lo12:.LANCHOR130]
	cbnz	w1, .L1107
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbz	w1, .L1108
.L1107:
	adrp	x1, .LANCHOR69
	ldr	x1, [x1, #:lo12:.LANCHOR69]
	ldr	w1, [x1, 156]
	cmp	w1, w23
	beq	.L1109
.L1108:
	add	x1, x22, x0, lsl 6
	mov	w2, 24
	mov	w5, 65535
	ldr	w3, [x1, 40]
	adrp	x1, .LANCHOR80
	ldrh	w4, [x1, #:lo12:.LANCHOR80]
	adrp	x1, .LANCHOR31
	ldrb	w1, [x1, #:lo12:.LANCHOR31]
	sub	w1, w2, w1
	sub	w2, w1, w4
	mov	w1, 1
	lsr	w4, w3, w4
	lsl	w1, w1, w2
	adrp	x2, .LANCHOR81
	sub	w1, w1, #1
	ldrb	w2, [x2, #:lo12:.LANCHOR81]
	and	w1, w1, w4
	udiv	w1, w1, w2
	adrp	x2, .LANCHOR12
	mov	x24, x2
	ldr	x4, [x2, #:lo12:.LANCHOR12]
	and	w25, w1, 65535
	and	w1, w1, w5
	ldr	w6, [x4, 560]
	cmp	w6, w5
	bne	.L1110
	str	w1, [x4, 560]
	str	w3, [x4, 564]
.L1110:
	add	x0, x22, x0, lsl 6
	ldr	w2, [x0, 36]
	adrp	x0, .LC66
	add	x0, x0, :lo12:.LC66
	bl	printf
	ldr	x0, [x24, #:lo12:.LANCHOR12]
	ldr	w1, [x0, 556]
	add	w1, w1, 1
	str	w1, [x0, 556]
	ldrh	w1, [x0, 16]
	cmp	w1, w25
	bne	.L1111
	strh	wzr, [x0, 22]
.L1109:
	mov	x0, x19
	mov	w25, 1
	bl	ftl_write_buf
	b	.L1105
.L1111:
	ldrh	w1, [x0, 48]
	cmp	w1, w25
	bne	.L1109
	strh	wzr, [x0, 54]
	b	.L1109
.L1106:
	cbz	w25, .L1114
	ldp	w1, w2, [x24, 36]
	adrp	x0, .LC67
	add	x0, x0, :lo12:.LC67
	bl	printf
	mov	x0, x19
	bl	ftl_write_buf
	b	.L1105
.L1114:
	ldrh	w2, [x24, 48]
	ldr	w0, [x24, 36]
	ldr	w1, [x24, 44]
	bl	lpa_hash_update_ppa
	ldrb	w0, [x24, 2]
	tbz	x0, 2, .L1115
	and	w0, w0, -3
	strb	w0, [x24, 2]
	b	.L1105
.L1115:
	mov	x0, x19
	bl	zbuf_free
	b	.L1105
	.size	ftl_write_completed, .-ftl_write_completed
	.section	.text.ftl_mask_bad_block,"ax",@progbits
	.align	2
	.global	ftl_mask_bad_block
	.type	ftl_mask_bad_block, %function
ftl_mask_bad_block:
	stp	x29, x30, [sp, -32]!
	adrp	x1, .LANCHOR31
	mov	w6, 24
	mov	w4, 1
	add	x29, sp, 0
	ldrb	w1, [x1, #:lo12:.LANCHOR31]
	stp	x19, x20, [sp, 16]
	sub	w6, w6, w1
	lsl	w1, w4, w1
	sub	w1, w1, #1
	lsr	w2, w0, w6
	and	w1, w1, w2
	adrp	x2, .LANCHOR81
	and	w1, w1, 255
	ldrb	w5, [x2, #:lo12:.LANCHOR81]
	cmp	w5, 1
	mul	w2, w1, w5
	and	w19, w2, 255
	adrp	x2, .LANCHOR80
	ldrh	w3, [x2, #:lo12:.LANCHOR80]
	lsr	w0, w0, w3
	sub	w3, w6, w3
	lsl	w3, w4, w3
	sub	w3, w3, #1
	and	w3, w3, w0
	and	w4, w3, 65535
	udiv	w3, w3, w5
	and	w20, w3, 65535
	bls	.L1122
	sub	w2, w5, #1
	and	w2, w2, w4
	add	w2, w19, w2
	and	w19, w2, 255
.L1122:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 14, .L1123
	adrp	x0, .LC68
	and	w3, w3, 65535
	mov	w2, w19
	add	x0, x0, :lo12:.LC68
	bl	printf
.L1123:
	adrp	x0, .LANCHOR8
	ldrh	w0, [x0, #:lo12:.LANCHOR8]
	cmp	w0, w20
	bls	.L1121
	adrp	x0, .LANCHOR9
	mov	w2, 1
	lsl	w2, w2, w19
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x20, x0, x20, uxth 2
	ldrb	w19, [x20, 3]
	orr	w2, w2, w19
	strb	w2, [x20, 3]
.L1121:
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	ftl_mask_bad_block, .-ftl_mask_bad_block
	.section	.text.gc_free_bad_sblk,"ax",@progbits
	.align	2
	.global	gc_free_bad_sblk
	.type	gc_free_bad_sblk, %function
gc_free_bad_sblk:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	and	w23, w0, 65535
	str	x27, [sp, 80]
	adrp	x27, .LANCHOR76
	add	x0, x27, :lo12:.LANCHOR76
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	ldr	w0, [x0, 2200]
	cbz	w0, .L1144
	adrp	x22, .LC69
	mov	w24, 20041
	add	x22, x22, :lo12:.LC69
	mov	w26, 0
	movk	w24, 0x444b, lsl 16
.L1131:
	adrp	x0, .LANCHOR85
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	cmp	w0, w26
	bhi	.L1141
.L1144:
	mov	w0, 0
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L1141:
	adrp	x0, .LANCHOR81
	adrp	x1, .LANCHOR31
	adrp	x21, .LANCHOR80
	ldrb	w2, [x0, #:lo12:.LANCHOR81]
	ldrb	w3, [x1, #:lo12:.LANCHOR31]
	mov	w1, 24
	and	w0, w2, 65535
	cmp	w2, 1
	sub	w1, w1, w3
	ldrh	w3, [x21, #:lo12:.LANCHOR80]
	sdiv	w19, w26, w2
	sub	w1, w1, w3
	lsl	w19, w19, w1
	madd	w19, w23, w0, w19
	and	w19, w19, 65535
	bls	.L1132
	sub	w0, w0, #1
	and	w0, w0, w26
	add	w19, w19, w0
	and	w19, w19, 65535
.L1132:
	adrp	x25, .LANCHOR130
	add	x25, x25, :lo12:.LANCHOR130
	mov	w20, 0
.L1133:
	add	x0, x27, :lo12:.LANCHOR76
	ldr	w1, [x0, 2200]
	cmp	w20, w1
	bcc	.L1140
	add	w26, w26, 1
	and	w26, w26, 65535
	b	.L1131
.L1140:
	add	x0, x0, x20, sxtw 1
	ldrh	w0, [x0, 2204]
	cmp	w0, w19
	bne	.L1134
	mov	w1, w19
	mov	x0, x22
	bl	printf
	ldrb	w0, [x25]
	cbnz	w0, .L1135
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L1136
.L1135:
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w0, [x0, 156]
	cmp	w0, w24
	beq	.L1137
.L1136:
	ldrh	w0, [x21, #:lo12:.LANCHOR80]
	lsl	w0, w19, w0
	bl	ftl_mask_bad_block
.L1137:
	add	x1, x27, :lo12:.LANCHOR76
	mov	w0, w20
	ldr	w2, [x1, 2200]
.L1138:
	cmp	w0, w2
	bcc	.L1139
	add	x0, x27, :lo12:.LANCHOR76
	sub	w2, w2, #1
	str	w2, [x0, 2200]
.L1134:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L1133
.L1139:
	add	w3, w0, 1
	add	x0, x1, x0, sxtw 1
	add	x4, x1, x3, sxtw 1
	ldrh	w4, [x4, 2204]
	strh	w4, [x0, 2204]
	and	w0, w3, 65535
	b	.L1138
	.size	gc_free_bad_sblk, .-gc_free_bad_sblk
	.section	.text.ftl_free_sblk,"ax",@progbits
	.align	2
	.global	ftl_free_sblk
	.type	ftl_free_sblk, %function
ftl_free_sblk:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR9
	and	x24, x0, 65535
	stp	x19, x20, [sp, 16]
	ldr	x3, [x23, #:lo12:.LANCHOR9]
	lsl	x19, x24, 2
	stp	x21, x22, [sp, 32]
	mov	x21, x24
	add	x20, x3, x19
	ldrb	w0, [x20, 2]
	ubfx	x22, x0, 5, 3
	tbz	x0, 3, .L1151
	adrp	x2, .LANCHOR69
	ldrh	w1, [x3, x19]
	adrp	x8, .LANCHOR131
	ldr	x7, [x2, #:lo12:.LANCHOR69]
	and	w1, w1, 2047
	ldr	w2, [x3, x19]
	ldrh	w8, [x8, #:lo12:.LANCHOR131]
	ldrh	w4, [x7, 74]
	ubfx	x5, x2, 11, 8
	adrp	x2, .LANCHOR10
	add	w4, w1, w4
	ldrh	w2, [x2, #:lo12:.LANCHOR10]
	and	w6, w4, 65535
	ldrh	w4, [x7, 72]
	add	w4, w5, w4
	udiv	w7, w6, w2
	and	w4, w4, 65535
	add	w7, w7, w4
	cmp	w7, w8
	ble	.L1152
	adrp	x4, .LANCHOR107
	adrp	x7, .LANCHOR111
	ldrh	w6, [x4, #:lo12:.LANCHOR107]
	adrp	x4, .LANCHOR97
	ldrh	w7, [x7, #:lo12:.LANCHOR111]
	ldrh	w4, [x4, #:lo12:.LANCHOR97]
	add	w6, w6, 7
	add	w4, w4, w7
	cmp	w6, w4
	blt	.L1153
.L1158:
	mov	w4, 2
	bfi	w0, w4, 3, 2
	b	.L1169
.L1153:
	adrp	x4, .LANCHOR104
	adrp	x7, .LANCHOR109
	ldrh	w6, [x4, #:lo12:.LANCHOR104]
	adrp	x4, .LANCHOR103
	ldrh	w7, [x7, #:lo12:.LANCHOR109]
	ldrh	w4, [x4, #:lo12:.LANCHOR103]
	add	w6, w6, 7
	add	w4, w4, w7
	adrp	x7, .LANCHOR105
	ldrh	w7, [x7, #:lo12:.LANCHOR105]
	add	w4, w4, w7
	cmp	w6, w4
	blt	.L1158
.L1171:
	and	w0, w0, -25
.L1169:
	strb	w0, [x20, 2]
.L1154:
	ldrb	w0, [x20, 2]
	ands	w0, w0, 24
	bne	.L1159
	mul	w2, w5, w2
	ldrh	w0, [x3, x19]
	add	w2, w2, w2, lsl 1
	add	w1, w1, w2, lsr 2
	lsr	w2, w5, 3
	bfi	w0, w1, 0, 11
	strh	w0, [x3, x19]
	ldr	w0, [x3, x19]
	bfi	w0, w2, 11, 8
	str	w0, [x3, x19]
.L1160:
	mov	w0, w21
	bl	zftl_remove_data_node
	ldr	x0, [x23, #:lo12:.LANCHOR9]
	add	w22, w22, 6
	and	w22, w22, 7
	add	x19, x0, x19
	cmp	w22, 4
	ldrb	w0, [x19, 2]
	and	w0, w0, 31
	strb	w0, [x19, 2]
	adrp	x0, .LANCHOR11
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x24, lsl 1]
	bhi	.L1163
	mov	w0, w21
	bl	gc_free_bad_sblk
.L1163:
	ldrb	w0, [x20, 2]
	tbz	x0, 3, .L1164
	adrp	x0, .LANCHOR12
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldrh	w1, [x0, 586]
	cmp	w1, w21
	bne	.L1164
	mov	w1, -1
	ldrh	w2, [x0, 590]
	strh	w1, [x0, 586]
	mov	w1, 65535
	cmp	w2, w1
	bne	.L1164
	strh	w21, [x0, 590]
	mov	w1, w21
	ldp	x19, x20, [sp, 16]
	adrp	x0, .LC70
	ldp	x21, x22, [sp, 32]
	add	x0, x0, :lo12:.LC70
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	b	printf
.L1152:
	madd	w4, w2, w4, w6
	adrp	x6, .LANCHOR132
	ldrh	w6, [x6, #:lo12:.LANCHOR132]
	cmp	w4, w6
	ble	.L1154
	adrp	x4, .LANCHOR104
	adrp	x7, .LANCHOR109
	ldrh	w6, [x4, #:lo12:.LANCHOR104]
	adrp	x4, .LANCHOR103
	ldrh	w7, [x7, #:lo12:.LANCHOR109]
	ldrh	w4, [x4, #:lo12:.LANCHOR103]
	add	w4, w4, w7
	adrp	x7, .LANCHOR105
	ldrh	w7, [x7, #:lo12:.LANCHOR105]
	add	w4, w4, w7
	add	w7, w6, 7
	cmp	w7, w4
	bge	.L1171
	adrp	x7, .LANCHOR107
	adrp	x10, .LANCHOR111
	ldrh	w8, [x7, #:lo12:.LANCHOR107]
	adrp	x7, .LANCHOR97
	ldrh	w10, [x10, #:lo12:.LANCHOR111]
	ldrh	w7, [x7, #:lo12:.LANCHOR97]
	add	w8, w8, 7
	add	w7, w7, w10
	cmp	w8, w7
	bge	.L1158
	add	w6, w6, 23
	cmp	w4, w6
	bgt	.L1158
	b	.L1171
.L1159:
	cmp	w0, 16
	bne	.L1160
	sdiv	w2, w1, w2
	ldr	w0, [x3, x19]
	add	w2, w2, w2, lsl 1
	add	w2, w5, w2, lsr 2
.L1170:
	bfi	w0, w2, 11, 8
	asr	w1, w1, 5
	str	w0, [x3, x19]
	bfi	w0, w1, 0, 11
	strh	w0, [x3, x19]
	b	.L1160
.L1151:
	tst	w0, 24
	bne	.L1160
	adrp	x1, .LANCHOR113
	ldrh	w1, [x1, #:lo12:.LANCHOR113]
	cbnz	w1, .L1160
	adrp	x1, .LANCHOR111
	ldrh	w4, [x1, #:lo12:.LANCHOR111]
	cmp	w4, 15
	bhi	.L1160
	adrp	x1, .LANCHOR103
	adrp	x2, .LANCHOR109
	ldrh	w1, [x1, #:lo12:.LANCHOR103]
	ldrh	w2, [x2, #:lo12:.LANCHOR109]
	add	w1, w1, w2
	adrp	x2, .LANCHOR105
	ldrh	w2, [x2, #:lo12:.LANCHOR105]
	add	w1, w1, w2
	adrp	x2, .LANCHOR104
	ldrh	w2, [x2, #:lo12:.LANCHOR104]
	add	w2, w2, 16
	cmp	w1, w2
	ble	.L1160
	adrp	x1, .LANCHOR107
	ldrh	w2, [x1, #:lo12:.LANCHOR107]
	adrp	x1, .LANCHOR97
	ldrh	w1, [x1, #:lo12:.LANCHOR97]
	add	w2, w2, 7
	add	w1, w1, w4
	cmp	w2, w1
	blt	.L1160
	mov	w1, 2
	bfi	w0, w1, 3, 2
	strb	w0, [x20, 2]
	adrp	x0, .LANCHOR10
	ldrh	w1, [x3, x19]
	ldrh	w0, [x0, #:lo12:.LANCHOR10]
	and	w1, w1, 2047
	sdiv	w0, w1, w0
	add	w2, w0, w0, lsl 1
	ldr	w0, [x3, x19]
	ubfx	x4, x0, 11, 8
	add	w2, w4, w2, lsr 2
	b	.L1170
.L1164:
	mov	w0, w21
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	b	zftl_insert_free_list
	.size	ftl_free_sblk, .-ftl_free_sblk
	.section	.text.gc_free_src_blk,"ax",@progbits
	.align	2
	.global	gc_free_src_blk
	.type	gc_free_src_blk, %function
gc_free_src_blk:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR76
	stp	x23, x24, [sp, 48]
	adrp	x22, .LC71
	adrp	x23, .LANCHOR11
	add	x21, x21, :lo12:.LANCHOR76
	mov	x24, x23
	add	x22, x22, :lo12:.LC71
	stp	x19, x20, [sp, 16]
	mov	w20, 0
	stp	x25, x26, [sp, 64]
.L1173:
	ldrh	w0, [x21, 56]
	cmp	w0, w20
	bhi	.L1187
	strh	wzr, [x21, 56]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L1187:
	add	x0, x21, x20, sxtw 1
	ldrh	w25, [x0, 58]
	ldr	x0, [x23, #:lo12:.LANCHOR11]
	mov	x19, x25
	lsl	x26, x25, 1
	ldrh	w2, [x0, x26]
	cbz	w2, .L1174
	mov	w1, w25
	mov	x0, x22
	bl	printf
.L1174:
	ldr	x0, [x24, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x26]
	adrp	x0, .LANCHOR9
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x25, x0, x25, lsl 2
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L1175
	ldrb	w2, [x25, 2]
	adrp	x0, .LC72
	mov	w1, w19
	add	x0, x0, :lo12:.LC72
	ubfx	x2, x2, 5, 3
	bl	printf
.L1175:
	ldrb	w0, [x25, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L1176
	tst	w0, 192
	bne	.L1177
.L1176:
	adrp	x1, .LANCHOR133
	adrp	x0, .LC0
	mov	w2, 1363
	add	x1, x1, :lo12:.LANCHOR133
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1177:
	mov	w0, w19
	bl	ftl_free_sblk
	adrp	x0, .LANCHOR12
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldrh	w2, [x0, 124]
	cbz	w2, .L1178
	add	x3, x0, 392
	mov	w1, 0
.L1180:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1179
	add	x1, x0, x1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 392]
	strh	w2, [x0, 124]
.L1178:
	ldrh	w2, [x0, 120]
	cbz	w2, .L1181
	add	x3, x0, 136
	mov	w1, 0
.L1183:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1182
	add	x1, x0, x1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 136]
	strh	w2, [x0, 120]
.L1181:
	ldrh	w2, [x0, 122]
	cbz	w2, .L1184
	add	x3, x0, 264
	mov	w1, 0
.L1186:
	ldrh	w4, [x3]
	cmp	w4, w19
	bne	.L1185
	add	x1, x0, x1, sxtw 1
	mov	w3, -1
	sub	w2, w2, #1
	strh	w3, [x1, 264]
	strh	w2, [x0, 122]
.L1184:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L1173
.L1179:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1180
	b	.L1178
.L1182:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1183
	b	.L1181
.L1185:
	add	w1, w1, 1
	add	x3, x3, 2
	cmp	w1, 64
	bne	.L1186
	b	.L1184
	.size	gc_free_src_blk, .-gc_free_src_blk
	.section	.text.print_ftl_debug_info,"ax",@progbits
	.align	2
	.global	print_ftl_debug_info
	.type	print_ftl_debug_info, %function
print_ftl_debug_info:
	ret
	.size	print_ftl_debug_info, .-print_ftl_debug_info
	.section	.text.sblk_init,"ax",@progbits
	.align	2
	.global	sblk_init
	.type	sblk_init, %function
sblk_init:
	adrp	x1, .LANCHOR59
	mov	w0, -1
	strb	w0, [x1, #:lo12:.LANCHOR59]
	adrp	x1, .LANCHOR64
	strb	w0, [x1, #:lo12:.LANCHOR64]
	adrp	x1, .LANCHOR62
	strb	w0, [x1, #:lo12:.LANCHOR62]
	adrp	x1, .LANCHOR63
	strb	w0, [x1, #:lo12:.LANCHOR63]
	mov	w0, 0
	ret
	.size	sblk_init, .-sblk_init
	.section	.text.dump_sblk_queue,"ax",@progbits
	.align	2
	.global	dump_sblk_queue
	.type	dump_sblk_queue, %function
dump_sblk_queue:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LC73
	add	x0, x0, :lo12:.LC73
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR59
	str	x21, [sp, 32]
	ldrb	w1, [x19, #:lo12:.LANCHOR59]
	bl	printf
	ldrb	w19, [x19, #:lo12:.LANCHOR59]
	cmp	w19, 255
	beq	.L1212
	adrp	x1, .LANCHOR55
	ubfiz	x19, x19, 6, 8
	add	x1, x1, :lo12:.LANCHOR55
	adrp	x21, .LC74
	add	x19, x1, x19
	add	x21, x21, :lo12:.LC74
	mov	x20, x1
.L1214:
	ldrb	w2, [x19, 58]
	mov	x0, x21
	ldrb	w1, [x19, 1]
	ldr	w3, [x19, 40]
	bl	printf
	ldrb	w19, [x19]
	cmp	w19, 255
	beq	.L1212
	ubfiz	x19, x19, 6, 8
	add	x19, x20, x19
	b	.L1214
.L1212:
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	dump_sblk_queue, .-dump_sblk_queue
	.section	.text.queue_lun_state,"ax",@progbits
	.align	2
	.global	queue_lun_state
	.type	queue_lun_state, %function
queue_lun_state:
	adrp	x2, .LANCHOR59
	ldrb	w2, [x2, #:lo12:.LANCHOR59]
	cmp	w2, 255
	beq	.L1230
	adrp	x3, .LANCHOR31
	mov	w8, 24
	adrp	x10, .LANCHOR55
	add	x10, x10, :lo12:.LANCHOR55
	ldrb	w4, [x3, #:lo12:.LANCHOR31]
	mov	w3, 1
	adrp	x13, .L1226
	mov	x15, x10
	sub	w8, w8, w4
	add	x13, x13, :lo12:.L1226
	lsl	w4, w3, w4
	sub	w4, w4, #1
	and	w6, w4, 65535
	adrp	x4, .LANCHOR80
	asr	w11, w0, w8
	and	w11, w11, w6
	ldrh	w12, [x4, #:lo12:.LANCHOR80]
	sub	w4, w8, w12
	lsl	w3, w3, w4
	sub	w3, w3, #1
	and	w7, w3, 65535
	adrp	x3, .LANCHOR81
	ldrb	w5, [x3, #:lo12:.LANCHOR81]
	asr	w3, w0, w12
	sub	w5, w5, #1
	and	w5, w5, 65535
	and	w3, w3, w5
	and	w3, w3, w7
.L1229:
	add	x14, x10, x2, lsl 6
	ldr	w4, [x14, 40]
	lsr	w0, w4, w8
	and	w0, w6, w0
	cmp	w11, w0
	bne	.L1224
	lsr	w4, w4, w12
	and	w4, w5, w4
	and	w4, w7, w4
	ldrb	w0, [x14, 58]
	cmp	w3, w4
	bne	.L1225
	cmp	w1, 1
	bne	.L1222
	cmp	w0, 7
	ccmp	w0, 9, 4, ne
	beq	.L1224
	ret
.L1225:
	cmp	w1, 3
	bhi	.L1224
	ldrb	w4, [x13,w1,uxtw]
	adr	x14, .Lrtx1226
	add	x4, x14, w4, sxtb #2
	br	x4
.Lrtx1226:
	.section	.rodata.queue_lun_state,"a",@progbits
	.align	0
	.align	2
.L1226:
	.byte	(.L1222 - .Lrtx1226) / 4
	.byte	(.L1227 - .Lrtx1226) / 4
	.byte	(.L1228 - .Lrtx1226) / 4
	.byte	(.L1222 - .Lrtx1226) / 4
	.section	.text.queue_lun_state
.L1227:
	cmp	w0, 7
	ccmp	w0, 9, 4, ne
	beq	.L1224
	ret
.L1228:
	cmp	w0, 11
	bne	.L1222
.L1224:
	lsl	x2, x2, 6
	ldrb	w2, [x15, x2]
	cmp	w2, 255
	bne	.L1229
.L1230:
	mov	w0, 0
.L1222:
	ret
	.size	queue_lun_state, .-queue_lun_state
	.section	.text.queue_remove_completed_req,"ax",@progbits
	.align	2
	.global	queue_remove_completed_req
	.type	queue_remove_completed_req, %function
queue_remove_completed_req:
	adrp	x4, .LANCHOR64
	adrp	x8, .LANCHOR63
	adrp	x1, .LANCHOR59
	adrp	x7, .LANCHOR62
	adrp	x3, .LANCHOR55
	ldrb	w14, [x4, #:lo12:.LANCHOR64]
	add	x5, x3, :lo12:.LANCHOR55
	ldrb	w2, [x1, #:lo12:.LANCHOR59]
	ldrb	w12, [x8, #:lo12:.LANCHOR63]
	mov	x11, x5
	ldrb	w13, [x7, #:lo12:.LANCHOR62]
	add	x16, x8, :lo12:.LANCHOR63
	add	x7, x7, :lo12:.LANCHOR62
	add	x10, x4, :lo12:.LANCHOR64
	mov	w6, 0
	mov	w15, -1
.L1233:
	cmp	w2, 255
	beq	.L1234
	sbfiz	x8, x2, 6, 32
	sxtw	x0, w2
	add	x4, x5, x8
	ldrb	w4, [x4, 58]
	sub	w4, w4, #12
	and	w4, w4, 255
	cmp	w4, 1
	bls	.L1235
	cbz	w6, .L1232
	strb	w2, [x1, #:lo12:.LANCHOR59]
	ret
.L1235:
	lsl	x6, x0, 6
	ldrb	w2, [x5, x8]
	add	x4, x5, x6
	strb	w15, [x5, x6]
	ldrb	w6, [x4, 59]
	cmp	w6, 1
	bne	.L1238
	ldrh	w4, [x4, 50]
	cbnz	w4, .L1246
	mov	w4, w14
	mov	x6, x10
.L1239:
	cmp	w4, 255
	bne	.L1244
	add	x3, x3, :lo12:.LANCHOR55
	strb	w2, [x1, #:lo12:.LANCHOR59]
	add	x0, x3, x0, lsl 6
	ldrb	w0, [x0, 1]
	strb	w0, [x6]
	ret
.L1238:
	cbnz	w6, .L1240
	ldr	w4, [x4, 36]
	cmn	w4, #1
	beq	.L1240
	mov	w4, w13
	mov	x6, x7
	b	.L1239
.L1246:
	mov	w4, w12
	mov	x6, x16
	b	.L1239
.L1244:
	mov	w6, w4
	sbfiz	x4, x4, 6, 32
	ldrb	w4, [x11, x4]
	cmp	w4, 255
	bne	.L1244
	add	x0, x11, x0, lsl 6
	sbfiz	x6, x6, 6, 32
	ldrb	w0, [x0, 1]
	strb	w0, [x11, x6]
.L1240:
	mov	w6, 1
	b	.L1233
.L1234:
	cbz	w6, .L1232
	mov	w0, -1
	strb	w0, [x1, #:lo12:.LANCHOR59]
.L1232:
	ret
	.size	queue_remove_completed_req, .-queue_remove_completed_req
	.section	.text.pm_alloc_new_blk,"ax",@progbits
	.align	2
	.global	pm_alloc_new_blk
	.type	pm_alloc_new_blk, %function
pm_alloc_new_blk:
	stp	x29, x30, [sp, -64]!
	adrp	x2, .LANCHOR85
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR69
	stp	x21, x22, [sp, 32]
	ldr	x1, [x20, #:lo12:.LANCHOR69]
	ldrb	w2, [x2, #:lo12:.LANCHOR85]
	ldrh	w0, [x1, 690]
	str	x23, [sp, 48]
	add	w0, w0, 1
	and	w0, w0, 65535
	strh	w0, [x1, 690]
	cmp	w2, w0
	bls	.L1257
	add	x0, x1, x0, sxtw 1
	ldrh	w1, [x0, 672]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L1258
.L1257:
	adrp	x19, .LC75
	add	x19, x19, :lo12:.LC75
	mov	w23, 65535
	adrp	x22, .LANCHOR9
.L1259:
	mov	w0, 1
	bl	ftl_alloc_sblk
	and	w21, w0, 65535
	cmp	w21, w23
	beq	.L1259
	mov	w1, 0
	mov	w0, w21
	bl	ftl_erase_sblk
	add	x14, x20, :lo12:.LANCHOR69
	ldr	x1, [x20, #:lo12:.LANCHOR69]
	mov	w0, w21
	add	x1, x1, 672
	bl	ftl_get_blk_list_in_sblk
	tst	w0, 65535
	bne	.L1260
	mov	w1, w21
	mov	x0, x19
	bl	printf
	ldr	x0, [x22, #:lo12:.LANCHOR9]
	add	x21, x0, x21, uxth 2
	ldrb	w0, [x21, 2]
	orr	w0, w0, -32
	strb	w0, [x21, 2]
	b	.L1259
.L1260:
	ldr	x0, [x14]
	adrp	x1, .LANCHOR134
	mov	w2, 1
	mov	w19, 0
	add	x0, x0, 416
	str	w2, [x1, #:lo12:.LANCHOR134]
	mov	w1, 65535
	strh	wzr, [x0, 274]
.L1262:
	ldrh	w2, [x0]
	cmp	w2, w1
	beq	.L1261
	add	w19, w19, 1
	add	x0, x0, 2
	and	w19, w19, 65535
	cmp	w19, 128
	bne	.L1262
	adrp	x1, .LANCHOR135
	adrp	x0, .LC0
	mov	w2, 264
	add	x1, x1, :lo12:.LANCHOR135
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1261:
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	add	x19, x0, x19, sxtw 1
	ldrh	w1, [x0, 688]
	strh	w21, [x19, 416]
	add	w1, w1, 1
	strh	w1, [x0, 688]
.L1258:
	ldr	x1, [x20, #:lo12:.LANCHOR69]
	ldrh	w0, [x1, 690]
	add	x0, x0, 336
	ldrh	w19, [x1, x0, lsl 1]
	mov	w0, 65533
	sub	w1, w19, #1
	cmp	w0, w1, uxth
	bcs	.L1264
	adrp	x1, .LANCHOR135
	adrp	x0, .LC0
	mov	w2, 270
	add	x1, x1, :lo12:.LANCHOR135
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1264:
	adrp	x1, .LANCHOR31
	mov	w2, 24
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrb	w1, [x1, #:lo12:.LANCHOR31]
	sub	w2, w2, w1
	adrp	x1, .LANCHOR80
	strh	wzr, [x0, 696]
	ldrh	w1, [x1, #:lo12:.LANCHOR80]
	strh	w19, [x0, 692]
	sub	w2, w2, w1
	asr	w4, w19, w2
	strh	w4, [x0, 694]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L1267
	mov	w0, 1
	and	w4, w4, 65535
	lsl	w2, w0, w2
	mov	w3, w19
	adrp	x0, .LC76
	sub	w2, w2, #1
	mov	w1, w19
	add	x0, x0, :lo12:.LC76
	bl	printf
.L1267:
	mov	w0, 0
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
	.size	pm_alloc_new_blk, .-pm_alloc_new_blk
	.section	.text.pm_select_ram_region,"ax",@progbits
	.align	2
	.global	pm_select_ram_region
	.type	pm_select_ram_region, %function
pm_select_ram_region:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR136
	add	x0, x0, :lo12:.LANCHOR136
	mov	x1, 0
	add	x29, sp, 0
	mov	w2, 65535
	str	x19, [sp, 16]
.L1276:
	lsl	x3, x1, 4
	and	w19, w1, 65535
	ldrh	w3, [x3, x0]
	cmp	w3, w2
	beq	.L1275
	add	x1, x1, 1
	cmp	x1, 8
	bne	.L1276
	add	x0, x0, 2
	mov	w19, w1
	mov	x2, x0
	mov	w4, 32768
	mov	w1, 0
.L1278:
	ldrh	w3, [x2]
	tbnz	x3, 15, .L1277
	cmp	w3, w4
	bcs	.L1277
	mov	w4, w3
	mov	w19, w1
.L1277:
	add	w1, w1, 1
	add	x2, x2, 16
	and	w1, w1, 65535
	cmp	w1, 8
	bne	.L1278
	cmp	w19, 8
	bne	.L1275
	adrp	x1, .LANCHOR137
	mov	w2, -1
	ldrb	w3, [x1, #:lo12:.LANCHOR137]
	mov	w1, 0
.L1280:
	ldrh	w5, [x0]
	cmp	w5, w2
	bcs	.L1279
	ldrh	w4, [x0, -2]
	cmp	w4, w3
	csel	w2, w2, w5, eq
	csel	w19, w19, w1, eq
.L1279:
	add	w1, w1, 1
	add	x0, x0, 16
	and	w1, w1, 65535
	cmp	w1, 8
	bne	.L1280
	cmp	w19, 8
	bne	.L1275
	adrp	x1, .LANCHOR138
	adrp	x0, .LC0
	mov	w2, 377
	add	x1, x1, :lo12:.LANCHOR138
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1275:
	mov	w0, w19
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_select_ram_region, .-pm_select_ram_region
	.section	.text.pm_ppa_update_check,"ax",@progbits
	.align	2
	.global	pm_ppa_update_check
	.type	pm_ppa_update_check, %function
pm_ppa_update_check:
	adrp	x4, .LANCHOR31
	adrp	x3, .LANCHOR80
	mov	w5, 24
	ldrb	w4, [x4, #:lo12:.LANCHOR31]
	ldrh	w3, [x3, #:lo12:.LANCHOR80]
	sub	w4, w5, w4
	sub	w5, w4, w3
	mov	w4, 1
	lsr	w3, w2, w3
	lsl	w4, w4, w5
	sub	w4, w4, #1
	and	w4, w4, w3
	adrp	x3, .LANCHOR81
	ldrb	w3, [x3, #:lo12:.LANCHOR81]
	udiv	w4, w4, w3
	adrp	x3, .LANCHOR9
	ldr	x3, [x3, #:lo12:.LANCHOR9]
	add	x4, x3, x4, uxth 2
	ldrb	w3, [x4, 2]
	ubfx	x3, x3, 5, 3
	cmp	w3, 1
	ccmp	w3, 7, 4, ne
	bne	.L1287
	stp	x29, x30, [sp, -16]!
	mov	w3, w2
	mov	w2, w1
	mov	x1, x0
	add	x29, sp, 0
	adrp	x0, .LC77
	add	x0, x0, :lo12:.LC77
	bl	printf
	mov	w0, -1
	ldp	x29, x30, [sp], 16
	ret
.L1287:
	mov	w0, 0
	ret
	.size	pm_ppa_update_check, .-pm_ppa_update_check
	.section	.text.idb_init,"ax",@progbits
	.align	2
	.global	idb_init
	.type	idb_init, %function
idb_init:
	adrp	x0, .LANCHOR139
	str	xzr, [x0, #:lo12:.LANCHOR139]
	adrp	x0, .LANCHOR140
	str	wzr, [x0, #:lo12:.LANCHOR140]
	adrp	x0, .LANCHOR141
	strb	wzr, [x0, #:lo12:.LANCHOR141]
	adrp	x0, .LANCHOR142
	str	xzr, [x0, #:lo12:.LANCHOR142]
	mov	w0, 0
	ret
	.size	idb_init, .-idb_init
	.section	.text.ftl_memset,"ax",@progbits
	.align	2
	.global	ftl_memset
	.type	ftl_memset, %function
ftl_memset:
	uxtw	x2, w2
	b	memset
	.size	ftl_memset, .-ftl_memset
	.section	.text.flash_lsb_page_tbl_build,"ax",@progbits
	.align	2
	.global	flash_lsb_page_tbl_build
	.type	flash_lsb_page_tbl_build, %function
flash_lsb_page_tbl_build:
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR21
	add	x29, sp, 0
	ldr	x1, [x1, #:lo12:.LANCHOR21]
	stp	x19, x20, [sp, 16]
	mov	w20, 1024
	str	x21, [sp, 32]
	adrp	x19, .LANCHOR3
	ldrb	w1, [x1, 12]
	sdiv	w20, w20, w1
	cbnz	w0, .L1295
	add	x1, x19, :lo12:.LANCHOR3
	mov	x0, 0
.L1296:
	strh	w0, [x1, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 512
	bne	.L1296
.L1302:
	adrp	x21, .LANCHOR143
	add	x21, x21, :lo12:.LANCHOR143
	mov	w2, 2048
	mov	w1, 255
	mov	x0, x21
	add	x19, x19, :lo12:.LANCHOR3
	bl	ftl_memset
	mov	x0, 0
.L1297:
	ldrh	w1, [x19, x0, lsl 1]
	add	x0, x0, 1
	cmp	w20, w0, uxth
	strh	w1, [x21, w1, sxtw 1]
	bhi	.L1297
	ldp	x19, x20, [sp, 16]
	ldr	x21, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1295:
	cmp	w0, 1
	bne	.L1298
	add	x3, x19, :lo12:.LANCHOR3
	mov	x1, 0
.L1301:
	and	w0, w1, 65535
	cmp	x1, 3
	bls	.L1299
	ubfiz	w2, w0, 1, 15
	and	w0, w0, 1
	add	w0, w0, 2
	sub	w0, w2, w0
	and	w0, w0, 65535
.L1299:
	strh	w0, [x3, x1, lsl 1]
	add	x1, x1, 1
	cmp	x1, 512
	bne	.L1301
	b	.L1302
.L1298:
	cmp	w0, 2
	bne	.L1303
	add	x3, x19, :lo12:.LANCHOR3
	mov	w1, 65535
	mov	x0, 0
.L1305:
	cmp	x0, 2
	and	w2, w0, 65535
	csel	w2, w2, w1, cc
	strh	w2, [x3, x0, lsl 1]
	add	w1, w1, 2
	add	x0, x0, 1
	and	w1, w1, 65535
	cmp	x0, 512
	bne	.L1305
	b	.L1302
.L1303:
	cmp	w0, 3
	bne	.L1306
	add	x3, x19, :lo12:.LANCHOR3
	mov	x1, 0
.L1309:
	and	w0, w1, 65535
	cmp	x1, 5
	bls	.L1307
	ubfiz	w2, w0, 1, 15
	and	w0, w0, 1
	add	w0, w0, 4
	sub	w0, w2, w0
	and	w0, w0, 65535
.L1307:
	strh	w0, [x3, x1, lsl 1]
	add	x1, x1, 1
	cmp	x1, 512
	bne	.L1309
	b	.L1302
.L1306:
	cmp	w0, 4
	bne	.L1310
	add	x1, x19, :lo12:.LANCHOR3
	mov	w2, 1
	add	x1, x1, 16
	strh	wzr, [x19, #:lo12:.LANCHOR3]
	strh	w0, [x1, -8]
	mov	w0, 5
	strh	w2, [x1, -14]
	mov	w2, 2
	strh	w0, [x1, -6]
	mov	w0, 7
	strh	w2, [x1, -12]
	mov	w2, 3
	strh	w0, [x1, -4]
	mov	w0, 8
	strh	w2, [x1, -10]
	strh	w0, [x1, -2]
	mov	w0, 8
.L1312:
	and	w3, w0, 1
	ubfiz	w2, w0, 1, 15
	add	w3, w3, 6
	add	w0, w0, 1
	sub	w2, w2, w3
	strh	w2, [x1], 2
	and	w0, w0, 65535
	cmp	w0, 512
	bne	.L1312
	b	.L1302
.L1310:
	cmp	w0, 5
	bne	.L1313
	add	x1, x19, :lo12:.LANCHOR3
	mov	x0, 0
.L1314:
	strh	w0, [x1, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 16
	bne	.L1314
	add	x1, x1, 32
.L1315:
	strh	w0, [x1], 2
	add	w0, w0, 2
	and	w0, w0, 65535
	cmp	w0, 1008
	bne	.L1315
	b	.L1302
.L1313:
	cmp	w0, 8
	bne	.L1316
	add	x1, x19, :lo12:.LANCHOR3
	mov	x0, 0
.L1317:
	strh	w0, [x0, x1]
	add	x0, x0, 2
	cmp	x0, 1024
	bne	.L1317
	b	.L1302
.L1316:
	cmp	w0, 9
	bne	.L1318
	add	x0, x19, :lo12:.LANCHOR3
	mov	w1, 1
	add	x0, x0, 6
	strh	wzr, [x19, #:lo12:.LANCHOR3]
	strh	w1, [x0, -4]
	mov	w1, 2
	strh	w1, [x0, -2]
	mov	w1, 3
.L1319:
	strh	w1, [x0], 2
	add	w1, w1, 2
	and	w1, w1, 65535
	cmp	w1, 1021
	bne	.L1319
	b	.L1302
.L1318:
	cmp	w0, 10
	bne	.L1320
	add	x1, x19, :lo12:.LANCHOR3
	mov	x0, 0
.L1321:
	strh	w0, [x1, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 63
	bne	.L1321
	add	x1, x1, 126
.L1322:
	strh	w0, [x1], 2
	add	w0, w0, 2
	and	w0, w0, 65535
	cmp	w0, 961
	bne	.L1322
	b	.L1302
.L1320:
	cmp	w0, 11
	bne	.L1323
	add	x1, x19, :lo12:.LANCHOR3
	mov	x0, 0
.L1324:
	strh	w0, [x1, x0, lsl 1]
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L1324
	add	x1, x1, 16
.L1326:
	and	w3, w0, 1
	ubfiz	w2, w0, 1, 15
	add	w3, w3, 6
	add	w0, w0, 1
	sub	w2, w2, w3
	strh	w2, [x1], 2
	and	w0, w0, 65535
	cmp	w0, 512
	bne	.L1326
	b	.L1302
.L1323:
	cmp	w0, 13
	bne	.L1302
	add	x2, x19, :lo12:.LANCHOR3
	mov	x1, 0
	mov	w0, 0
.L1327:
	strh	w0, [x1, x2]
	add	w0, w0, 3
	and	w0, w0, 65535
	add	x1, x1, 2
	cmp	w0, 1536
	bne	.L1327
	b	.L1302
	.size	flash_lsb_page_tbl_build, .-flash_lsb_page_tbl_build
	.section	.text.flash_die_info_init,"ax",@progbits
	.align	2
	.global	flash_die_info_init
	.type	flash_die_info_init, %function
flash_die_info_init:
	stp	x29, x30, [sp, -128]!
	adrp	x0, .LANCHOR19
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	tbz	x0, 12, .L1350
	adrp	x1, .LANCHOR144
	adrp	x0, .LC1
	add	x1, x1, :lo12:.LANCHOR144
	add	x0, x0, :lo12:.LC1
	bl	printf
.L1350:
	adrp	x19, .LANCHOR32
	add	x23, x19, :lo12:.LANCHOR32
	adrp	x25, .LANCHOR2
	adrp	x20, .LANCHOR23
	mov	w2, 8
	adrp	x22, .LANCHOR29
	ldrh	w0, [x23, 26]
	adrp	x21, .LANCHOR146
	ldrb	w1, [x23, 12]
	adrp	x26, .LANCHOR33
	strh	w0, [x25, #:lo12:.LANCHOR2]
	adrp	x24, .LANCHOR47
	ldrh	w0, [x23, 10]
	add	x26, x26, :lo12:.LANCHOR33
	strb	wzr, [x20, #:lo12:.LANCHOR23]
	add	x27, x24, :lo12:.LANCHOR47
	mov	x28, 0
	sdiv	w0, w0, w1
	adrp	x1, .LANCHOR145
	strh	w0, [x1, #:lo12:.LANCHOR145]
	mov	w1, 0
	add	x0, x22, :lo12:.LANCHOR29
	bl	ftl_memset
	mov	w2, 32
	mov	w1, 0
	add	x0, x21, :lo12:.LANCHOR146
	bl	ftl_memset
	add	x0, x23, 1
	str	x0, [x29, 120]
.L1353:
	mov	w0, 2
	ldrb	w2, [x23]
	strb	w0, [x28, x26]
	lsl	x7, x28, 3
	ldr	x0, [x29, 120]
	add	x1, x27, x7
	bl	flash_mem_cmp8
	cbnz	w0, .L1351
	ldrb	w4, [x20, #:lo12:.LANCHOR23]
	add	x1, x21, :lo12:.LANCHOR146
	and	w2, w28, 255
	add	w0, w4, 1
	strb	w0, [x20, #:lo12:.LANCHOR23]
	add	x0, x22, :lo12:.LANCHOR29
	str	wzr, [x1, x4, lsl 2]
	strb	w2, [x0, x4]
	ldrb	w0, [x7, x27]
	cmp	w0, 173
	bne	.L1352
	adrp	x0, .LANCHOR7
	str	w2, [x29, 108]
	ldr	x1, [x0, #:lo12:.LANCHOR7]
	mov	w0, 191
	add	x1, x1, x28, lsl 8
	str	x1, [x29, 112]
	str	w0, [x1, 2056]
	bl	nandc_wait_flash_ready
	ldr	x1, [x29, 112]
	mov	w0, 223
	str	w0, [x1, 2056]
	bl	nandc_wait_flash_ready
	ldr	w2, [x29, 108]
.L1352:
	mov	w0, w2
	bl	zftl_flash_enter_slc_mode
.L1351:
	add	x28, x28, 1
	cmp	x28, 4
	bne	.L1353
	add	x0, x19, :lo12:.LANCHOR32
	ldrb	w1, [x0, 8]
	cmp	w1, 2
	beq	.L1354
.L1358:
	add	x19, x19, :lo12:.LANCHOR32
	ldrb	w0, [x20, #:lo12:.LANCHOR23]
	ldp	x21, x22, [sp, 32]
	ldrb	w1, [x19, 13]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	mul	w0, w0, w1
	ldrh	w1, [x19, 14]
	ldp	x27, x28, [sp, 80]
	ldp	x19, x20, [sp, 16]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR147
	strh	w0, [x1, #:lo12:.LANCHOR147]
	ldp	x29, x30, [sp], 128
	ret
.L1354:
	ldrh	w1, [x25, #:lo12:.LANCHOR2]
	add	x24, x24, :lo12:.LANCHOR47
	ldrb	w8, [x0, 13]
	add	x7, x0, 1
	ldrb	w12, [x19, #:lo12:.LANCHOR32]
	add	x11, x20, :lo12:.LANCHOR23
	ldrb	w13, [x0, 23]
	add	x21, x21, :lo12:.LANCHOR146
	add	x22, x22, :lo12:.LANCHOR29
	mov	x10, 0
	mul	w8, w8, w1
	ldrh	w1, [x0, 14]
	and	w1, w1, 65280
	mul	w8, w8, w1
	lsl	w14, w8, 1
.L1357:
	mov	w2, w12
	add	x1, x24, x10, lsl 3
	mov	x0, x7
	bl	flash_mem_cmp8
	cbnz	w0, .L1355
	ldrb	w1, [x11]
	cmp	w13, 0
	csel	w2, w8, w14, eq
	add	w0, w1, 1
	strb	w0, [x11]
	str	w2, [x21, x1, lsl 2]
	strb	w10, [x22, x1]
.L1355:
	add	x10, x10, 1
	cmp	x10, 4
	bne	.L1357
	b	.L1358
	.size	flash_die_info_init, .-flash_die_info_init
	.section	.text.lpa_hash_init,"ax",@progbits
	.align	2
	.global	lpa_hash_init
	.type	lpa_hash_init, %function
lpa_hash_init:
	stp	x29, x30, [sp, -16]!
	mov	w2, 512
	mov	w1, 255
	adrp	x0, .LANCHOR122
	add	x29, sp, 0
	add	x0, x0, :lo12:.LANCHOR122
	bl	ftl_memset
	adrp	x0, .LANCHOR100
	mov	w1, 255
	ldp	x29, x30, [sp], 16
	ldrh	w2, [x0, #:lo12:.LANCHOR100]
	adrp	x0, .LANCHOR85
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	mul	w2, w2, w0
	adrp	x0, .LANCHOR124
	ldr	x0, [x0, #:lo12:.LANCHOR124]
	lsl	w2, w2, 2
	b	ftl_memset
	.size	lpa_hash_init, .-lpa_hash_init
	.section	.text.lpa_rebuild_hash,"ax",@progbits
	.align	2
	.global	lpa_rebuild_hash
	.type	lpa_rebuild_hash, %function
lpa_rebuild_hash:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LANCHOR19
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	tbz	x0, 12, .L1371
	adrp	x1, .LANCHOR148
	adrp	x0, .LC78
	mov	w3, 0
	mov	w2, 239
	add	x1, x1, :lo12:.LANCHOR148
	add	x0, x0, :lo12:.LC78
	bl	printf
.L1371:
	adrp	x20, .LANCHOR100
	adrp	x22, .LANCHOR85
	adrp	x19, .LANCHOR122
	add	x19, x19, :lo12:.LANCHOR122
	mov	w2, 512
	mov	w1, 255
	mov	x0, x19
	bl	ftl_memset
	ldrh	w2, [x20, #:lo12:.LANCHOR100]
	adrp	x21, .LANCHOR124
	ldrb	w0, [x22, #:lo12:.LANCHOR85]
	mov	w1, 255
	add	x20, x20, :lo12:.LANCHOR100
	mul	w2, w2, w0
	ldr	x0, [x21, #:lo12:.LANCHOR124]
	lsl	w2, w2, 2
	bl	ftl_memset
	adrp	x0, .LANCHOR123
	ldrb	w3, [x22, #:lo12:.LANCHOR85]
	ldr	x5, [x21, #:lo12:.LANCHOR124]
	mov	w1, 0
	ldr	x4, [x0, #:lo12:.LANCHOR123]
.L1372:
	ldrh	w0, [x20]
	mul	w0, w0, w3
	cmp	w1, w0, lsl 1
	blt	.L1374
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L1374:
	uxtw	x2, w1
	ldr	w0, [x4, x2, lsl 2]
	cmn	w0, #1
	beq	.L1373
	and	x0, x0, 255
	ldrh	w6, [x19, x0, lsl 1]
	strh	w1, [x19, x0, lsl 1]
	strh	w6, [x5, x2, lsl 1]
.L1373:
	add	w1, w1, 1
	and	w1, w1, 65535
	b	.L1372
	.size	lpa_rebuild_hash, .-lpa_rebuild_hash
	.section	.text.zftl_read_flash_info,"ax",@progbits
	.align	2
	.global	zftl_read_flash_info
	.type	zftl_read_flash_info, %function
zftl_read_flash_info:
	stp	x29, x30, [sp, -32]!
	mov	w2, 11
	mov	w1, 0
	add	x29, sp, 0
	str	x19, [sp, 16]
	mov	x19, x0
	bl	ftl_memset
	adrp	x1, .LANCHOR32
	add	x1, x1, :lo12:.LANCHOR32
	adrp	x0, .LANCHOR2
	adrp	x3, .LANCHOR73
	strb	wzr, [x19, 10]
	mov	w4, 1
	ldrb	w2, [x1, 9]
	ldrh	w0, [x0, #:lo12:.LANCHOR2]
	mul	w0, w2, w0
	strb	w0, [x19, 4]
	ubfx	x0, x0, 8, 8
	strb	w0, [x19, 5]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	strb	w0, [x19, 7]
	add	x0, x3, :lo12:.LANCHOR73
	ldrb	w3, [x3, #:lo12:.LANCHOR73]
	strb	w3, [x19]
	ldrb	w3, [x0, 1]
	strb	w3, [x19, 1]
	ldrb	w3, [x0, 2]
	ldrb	w0, [x0, 3]
	strb	w3, [x19, 2]
	strb	w0, [x19, 3]
	mov	w0, 32
	strb	w2, [x19, 6]
	adrp	x2, .LANCHOR29
	strb	w0, [x19, 8]
	add	x2, x2, :lo12:.LANCHOR29
	ldrb	w0, [x1, 7]
	mov	x1, 0
	strb	w0, [x19, 9]
	adrp	x0, .LANCHOR23
	ldrb	w3, [x0, #:lo12:.LANCHOR23]
.L1383:
	cmp	w3, w1, uxtb
	bhi	.L1384
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L1384:
	ldrb	w0, [x1, x2]
	add	x1, x1, 1
	ldrb	w5, [x19, 10]
	lsl	w0, w4, w0
	orr	w0, w0, w5
	strb	w0, [x19, 10]
	b	.L1383
	.size	zftl_read_flash_info, .-zftl_read_flash_info
	.section	.text.gc_static_wearleveling,"ax",@progbits
	.align	2
	.global	gc_static_wearleveling
	.type	gc_static_wearleveling, %function
gc_static_wearleveling:
	stp	x29, x30, [sp, -160]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR69
	stp	x19, x20, [sp, 16]
	ldr	x0, [x22, #:lo12:.LANCHOR69]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldr	w1, [x0, 32]
	mov	w0, 10240
	cmp	w1, w0
	bls	.L1387
	bl	ftl_tmp_into_update
.L1387:
	adrp	x19, .LANCHOR12
	mov	w3, 36000
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	w1, [x0, 568]
	ldr	w2, [x0, 12]
	add	w3, w1, w3
	cmp	w2, w3
	bcs	.L1388
	ldr	x4, [x22, #:lo12:.LANCHOR69]
	ldr	w3, [x0, 572]
	add	w3, w3, 256
	ldr	w4, [x4, 36]
	cmp	w4, w3
	bcc	.L1440
.L1388:
	add	w1, w1, 860160
	add	w1, w1, 3840
	cmp	w2, w1
	bhi	.L1390
	ldr	x3, [x22, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 572]
	add	w1, w1, 32
	ldr	w3, [x3, 36]
	cmp	w3, w1
	bls	.L1441
.L1390:
	ldr	x1, [x22, #:lo12:.LANCHOR69]
	mov	w20, 65535
	adrp	x8, .LANCHOR19
	mov	w21, w20
	add	x8, x8, :lo12:.LANCHOR19
	mov	w27, 0
	mov	w25, 0
	mov	w26, 0
	ldr	w3, [x1, 36]
	mov	w23, 0
	ldrh	w28, [x1, 134]
	adrp	x24, .LANCHOR9
	str	w2, [x0, 568]
	str	w3, [x0, 572]
	adrp	x0, .LANCHOR8
	add	x10, x0, :lo12:.LANCHOR8
	str	wzr, [x29, 128]
	str	wzr, [x29, 136]
	stp	wzr, wzr, [x29, 144]
.L1392:
	ldrh	w0, [x10]
	cmp	w0, w28
	bhi	.L1401
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	mov	w2, 128
	mov	w1, 255
	add	x0, x0, 264
	strh	wzr, [x0, -142]
	bl	ftl_memset
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	adrp	x2, .LANCHOR19
	ldr	x8, [x24, #:lo12:.LANCHOR9]
	ldr	w3, [x2, #:lo12:.LANCHOR19]
	str	x2, [x29, 152]
	ldrh	w0, [x0, 586]
	mov	x1, x0
	lsl	x28, x0, 2
	add	x10, x8, x28
	tbz	x3, 10, .L1402
	adrp	x2, .LANCHOR11
	ldrb	w6, [x10, 3]
	ldrb	w4, [x10, 2]
	ldr	x5, [x2, #:lo12:.LANCHOR11]
	ldr	w3, [x8, x28]
	ldrh	w2, [x8, x28]
	stp	x8, x10, [x29, 112]
	ldrh	w7, [x5, x0, lsl 1]
	ubfx	x3, x3, 11, 8
	ubfx	x5, x4, 5, 3
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	adrp	x0, .LC80
	add	x0, x0, :lo12:.LC80
	bl	printf
	ldp	x8, x10, [x29, 112]
.L1402:
	ldrb	w0, [x10, 2]
	and	w3, w0, 224
	cmp	w3, 32
	bne	.L1403
	ldr	x1, [x22, #:lo12:.LANCHOR69]
	ldrh	w1, [x1, 688]
	cmp	w1, 2
	bls	.L1403
	adrp	x1, .LANCHOR149
	mov	w2, 1
	str	w2, [x1, #:lo12:.LANCHOR149]
.L1403:
	ldrb	w1, [x10, 2]
	tbz	x1, 3, .L1404
	ldr	x1, [x22, #:lo12:.LANCHOR69]
	ldrh	w2, [x8, x28]
	and	w2, w2, 2047
	ldrh	w4, [x1, 96]
	adrp	x1, .LANCHOR150
	ldrh	w1, [x1, #:lo12:.LANCHOR150]
	add	w1, w2, w1, lsr 2
	cmp	w4, w1
	ble	.L1404
	and	w0, w0, 192
	cmp	w0, 64
	bne	.L1405
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	mov	w1, 0
	mov	w2, 1
	ldrh	w0, [x0, 586]
	bl	gc_add_sblk
	adrp	x0, .LANCHOR76+2192
	mov	w1, 1
	strh	w1, [x0, #:lo12:.LANCHOR76+2192]
.L1404:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	x2, [x29, 152]
	ldr	x11, [x24, #:lo12:.LANCHOR9]
	ldrh	w0, [x0, 584]
	ldr	w2, [x2, #:lo12:.LANCHOR19]
	mov	x1, x0
	lsl	x10, x0, 2
	add	x28, x11, x10
	tbz	x2, 10, .L1406
	adrp	x2, .LANCHOR11
	ldrb	w6, [x28, 3]
	ldrb	w4, [x28, 2]
	ldr	x5, [x2, #:lo12:.LANCHOR11]
	ldr	w3, [x11, x10]
	ldrh	w2, [x11, x10]
	stp	x10, x11, [x29, 112]
	ldrh	w7, [x5, x0, lsl 1]
	ubfx	x3, x3, 11, 8
	ubfx	x5, x4, 5, 3
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	adrp	x0, .LC81
	add	x0, x0, :lo12:.LC81
	bl	printf
	ldp	x10, x11, [x29, 112]
.L1406:
	ldrb	w0, [x28, 2]
	tbz	x0, 3, .L1407
	ldr	x0, [x22, #:lo12:.LANCHOR69]
	ldr	w1, [x11, x10]
	ldrh	w2, [x0, 98]
	adrp	x0, .LANCHOR151
	ubfx	x1, x1, 11, 8
	ldrh	w0, [x0, #:lo12:.LANCHOR151]
	add	w0, w1, w0, lsr 2
	cmp	w2, w0
	ble	.L1407
	ldrb	w0, [x28, 2]
	and	w1, w0, 192
	cmp	w1, 64
	bne	.L1408
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	mov	w1, 0
	mov	w2, 1
	ldrh	w0, [x0, 584]
	bl	gc_add_sblk
	adrp	x0, .LANCHOR76+2192
	mov	w1, 1
	strh	w1, [x0, #:lo12:.LANCHOR76+2192]
.L1407:
	ldr	x0, [x29, 152]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1409
	adrp	x2, .LANCHOR11
	ldr	x1, [x24, #:lo12:.LANCHOR9]
	uxtw	x6, w27
	lsl	x0, x6, 2
	ldr	x7, [x2, #:lo12:.LANCHOR11]
	add	x5, x1, x0
	ldr	w3, [x1, x0]
	ldrh	w7, [x7, x6, lsl 1]
	ldrb	w6, [x5, 3]
	ldrb	w4, [x5, 2]
	ubfx	x3, x3, 11, 8
	ldrh	w2, [x1, x0]
	adrp	x0, .LC82
	mov	w1, w27
	add	x0, x0, :lo12:.LC82
	ubfx	x5, x4, 5, 3
	and	w2, w2, 2047
	ubfx	x4, x4, 3, 2
	bl	printf
.L1409:
	ldr	x0, [x29, 152]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1410
	ldr	w6, [x29, 128]
	adrp	x2, .LANCHOR11
	ldr	x1, [x24, #:lo12:.LANCHOR9]
	ldr	x7, [x2, #:lo12:.LANCHOR11]
	lsl	x0, x6, 2
	add	x5, x1, x0
	ldr	w3, [x1, x0]
	ldrh	w2, [x1, x0]
	adrp	x0, .LC83
	ldrh	w7, [x7, x6, lsl 1]
	add	x0, x0, :lo12:.LC83
	ldrb	w6, [x5, 3]
	ubfx	x3, x3, 11, 8
	ldr	w1, [x29, 128]
	and	w2, w2, 2047
	ldrb	w4, [x5, 2]
	ubfx	x5, x4, 5, 3
	ubfx	x4, x4, 3, 2
	bl	printf
.L1410:
	ldr	x0, [x22, #:lo12:.LANCHOR69]
	ldrh	w1, [x29, 148]
	strh	w1, [x0, 96]
	ldr	w1, [x29, 136]
	strh	w23, [x0, 98]
	strh	w20, [x0, 92]
	strh	w21, [x0, 94]
	udiv	w3, w1, w26
	ldr	w1, [x29, 144]
	udiv	w4, w1, w25
	strh	w3, [x0, 88]
	strh	w4, [x0, 90]
	ldr	x0, [x29, 152]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1411
	adrp	x0, .LC84
	and	w4, w4, 65535
	and	w3, w3, 65535
	mov	w2, w25
	mov	w1, w26
	add	x0, x0, :lo12:.LC84
	bl	printf
.L1411:
	ldr	x0, [x29, 152]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1412
	adrp	x0, .LANCHOR151
	ldr	w3, [x29, 148]
	mov	w4, w23
	mov	w2, w21
	ldrh	w6, [x0, #:lo12:.LANCHOR151]
	adrp	x0, .LANCHOR150
	mov	w1, w20
	ldrh	w5, [x0, #:lo12:.LANCHOR150]
	adrp	x0, .LC85
	add	x0, x0, :lo12:.LC85
	bl	printf
.L1412:
	sub	w0, w23, w21
	str	w0, [x29, 144]
	adrp	x0, .LANCHOR151
	ldr	w1, [x29, 144]
	ldrh	w0, [x0, #:lo12:.LANCHOR151]
	cmp	w1, w0
	bgt	.L1413
	adrp	x1, .LANCHOR150
	ldr	w0, [x29, 148]
	ldrh	w1, [x1, #:lo12:.LANCHOR150]
	sub	w0, w0, w20
	cmp	w0, w1
	ble	.L1442
.L1413:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	adrp	x26, .LANCHOR76
	add	x26, x26, :lo12:.LANCHOR76
	mov	w25, 0
	mov	w23, 0
	ldrh	w28, [x0, 580]
	ldr	x0, [x22, #:lo12:.LANCHOR69]
	ldrh	w27, [x0, 134]
	adrp	x0, .LANCHOR8
	add	x0, x0, :lo12:.LANCHOR8
	str	x0, [x29, 136]
	adrp	x0, .LANCHOR150
	add	x0, x0, :lo12:.LANCHOR150
	str	x0, [x29, 128]
.L1415:
	ldr	x0, [x29, 136]
	ldrh	w0, [x0]
	cmp	w27, w0
	bcc	.L1425
.L1424:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	str	w28, [x0, 580]
.L1414:
	cbz	w21, .L1427
	ldr	x2, [x22, #:lo12:.LANCHOR69]
	adrp	x0, .LANCHOR8
	ldrh	w5, [x0, #:lo12:.LANCHOR8]
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	ldrh	w1, [x2, 134]
	add	x0, x0, x1, uxth 2
.L1428:
	cmp	w1, w5
	bcc	.L1430
	ldrh	w0, [x2, 72]
	add	w0, w21, w0
	strh	w0, [x2, 72]
	ldrh	w0, [x2, 98]
	cmp	w21, w0
	bcs	.L1427
	sub	w21, w0, w21
	strh	w21, [x2, 98]
.L1427:
	cbz	w20, .L1433
	ldr	x2, [x22, #:lo12:.LANCHOR69]
	adrp	x0, .LANCHOR8
	ldrh	w6, [x0, #:lo12:.LANCHOR8]
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	ldrh	w1, [x2, 134]
	add	x0, x0, x1, uxth 2
.L1434:
	cmp	w1, w6
	bcc	.L1436
	ldrh	w0, [x2, 74]
	add	w0, w20, w0
	strh	w0, [x2, 74]
	ldrh	w0, [x2, 96]
	cmp	w20, w0
	bcs	.L1433
	sub	w20, w0, w20
	strh	w20, [x2, 96]
.L1433:
	mov	w1, 0
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L1391
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x3, [x2, #:lo12:.LANCHOR11]
	adrp	x2, .LANCHOR100
	ldrh	w2, [x2, #:lo12:.LANCHOR100]
	ldrh	w1, [x3, x1]
	cmp	w1, w2, lsr 1
	bhi	.L1391
	add	w23, w23, 1
	mov	w2, 1
	mov	w1, 0
	bl	gc_add_sblk
.L1391:
	add	w0, w23, w25
.L1386:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 160
	ret
.L1401:
	uxtw	x7, w28
	ldr	x6, [x24, #:lo12:.LANCHOR9]
	lsl	x2, x7, 2
	add	x11, x6, x2
	ldrb	w0, [x11, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L1393
	ubfx	x4, x0, 3, 2
	tbz	x4, 0, .L1394
	ldr	w0, [x6, x2]
	ldrh	w1, [x6, x2]
	ubfx	x0, x0, 11, 8
	and	w1, w1, 2047
.L1395:
	ldr	w3, [x29, 136]
	add	w26, w26, 1
	and	w26, w26, 65535
	cmp	w20, w1
	add	w3, w3, w1
	str	w3, [x29, 136]
	bls	.L1439
	ldr	x3, [x19, #:lo12:.LANCHOR12]
	mov	w20, w1
	strh	w28, [x3, 586]
.L1439:
	ldr	w3, [x29, 148]
	cmp	w3, w1
	bcs	.L1398
	mov	w27, w28
	str	w1, [x29, 148]
.L1398:
	mov	w3, 65535
	cmp	w0, w3
	bne	.L1397
.L1399:
	cmp	w0, 9
	ccmp	w1, 9, 0, hi
	bhi	.L1393
	ldr	w0, [x8]
	tbz	x0, 8, .L1393
	adrp	x0, .LANCHOR11
	ldr	w3, [x6, x2]
	ldrh	w2, [x6, x2]
	mov	w1, w28
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrb	w6, [x11, 3]
	ubfx	x3, x3, 11, 8
	ldrb	w5, [x11, 2]
	and	w2, w2, 2047
	str	x8, [x29, 120]
	ldrh	w7, [x0, x7, lsl 1]
	adrp	x0, .LC79
	str	x10, [x29, 152]
	ubfx	x5, x5, 5, 3
	add	x0, x0, :lo12:.LC79
	bl	printf
	ldr	x8, [x29, 120]
	ldr	x10, [x29, 152]
.L1393:
	add	w28, w28, 1
	and	w28, w28, 65535
	b	.L1392
.L1394:
	tst	w0, 24
	bne	.L1396
	ldrh	w1, [x6, x2]
	mov	w0, 65535
	and	w1, w1, 2047
	b	.L1395
.L1396:
	ldr	w0, [x6, x2]
	mov	w1, 65535
	ubfx	x0, x0, 11, 8
.L1397:
	ldr	w3, [x29, 144]
	add	w25, w25, 1
	and	w25, w25, 65535
	cmp	w21, w0
	add	w3, w3, w0
	str	w3, [x29, 144]
	bls	.L1400
	ldr	x3, [x19, #:lo12:.LANCHOR12]
	mov	w21, w0
	strh	w28, [x3, 584]
.L1400:
	cmp	w23, w0
	bcs	.L1399
	mov	w23, w0
	str	w28, [x29, 128]
	b	.L1399
.L1405:
	cbnz	w3, .L1404
	ldr	x1, [x19, #:lo12:.LANCHOR12]
	mov	w0, 65535
	ldrh	w2, [x1, 590]
	cmp	w2, w0
	bne	.L1404
	ldrh	w0, [x1, 586]
	ldrh	w1, [x1, 588]
	cmp	w1, w0
	beq	.L1404
	bl	zftl_remove_free_node
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldrh	w1, [x0, 586]
	strh	w1, [x0, 590]
	mov	w1, -1
	strh	w1, [x0, 586]
	b	.L1404
.L1408:
	and	w0, w0, 248
	cmp	w0, 16
	bne	.L1407
	ldr	x1, [x19, #:lo12:.LANCHOR12]
	mov	w0, 65535
	ldrh	w2, [x1, 588]
	cmp	w2, w0
	bne	.L1407
	ldrh	w0, [x1, 584]
	ldrh	w1, [x1, 590]
	cmp	w1, w0
	beq	.L1407
	bl	zftl_remove_free_node
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldrh	w1, [x0, 584]
	strh	w1, [x0, 588]
	mov	w1, -1
	strh	w1, [x0, 584]
	b	.L1407
.L1425:
	add	w7, w28, 1
	ldr	x4, [x24, #:lo12:.LANCHOR9]
	and	w28, w7, 65535
	cmp	w0, w28
	csel	w28, w28, wzr, hi
	uxtw	x8, w28
	lsl	x3, x8, 2
	add	x0, x4, x3
	ldrb	w0, [x0, 2]
	tst	w0, 192
	beq	.L1417
	and	w2, w0, 224
	cmp	w2, 224
	beq	.L1417
	ubfx	x0, x0, 3, 2
	and	w1, w0, 1
	tbz	x0, 0, .L1418
	cmp	w2, 160
.L1505:
	bne	.L1420
	adrp	x0, .LANCHOR151
	ldr	w2, [x29, 144]
	ldrh	w0, [x0, #:lo12:.LANCHOR151]
	cmp	w2, w0
	ble	.L1421
	ldr	w0, [x4, x3]
	ubfx	x0, x0, 11, 8
	cmp	w0, w21
	bls	.L1422
	cbz	w1, .L1421
	ldrh	w0, [x4, x3]
	and	w0, w0, 2047
	cmp	w0, w20
	bgt	.L1421
.L1422:
	stp	x4, x8, [x29, 104]
	mov	w2, 1
	str	x3, [x29, 120]
	mov	w1, 0
	mov	w0, w28
	bl	gc_add_sblk
	mov	w0, 1
	strh	w0, [x26, 2192]
	ldr	x0, [x29, 152]
	add	w23, w23, 1
	ldp	x4, x8, [x29, 104]
	ldr	x3, [x29, 120]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1421
	adrp	x0, .LANCHOR11
	ldr	w6, [x4, x3]
	ldrh	w5, [x4, x3]
	ldr	x1, [x0, #:lo12:.LANCHOR11]
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	ubfx	x6, x6, 11, 8
	ldrh	w4, [x26, 56]
	and	w5, w5, 2047
	add	x3, x0, x3
	adrp	x0, .LC86
	add	x0, x0, :lo12:.LC86
	ldrb	w2, [x3, 2]
	ldrh	w3, [x1, x8, lsl 1]
	mov	w1, w28
	ubfx	x2, x2, 5, 3
.L1506:
	bl	printf
.L1421:
	cmp	w23, 4
	ccmp	w25, 4, 2, ls
	bhi	.L1424
.L1417:
	add	w27, w27, 1
	and	w27, w27, 65535
	b	.L1415
.L1418:
	cmp	w0, 2
	b	.L1505
.L1420:
	ldr	x2, [x29, 128]
	ldr	w0, [x29, 148]
	sub	w0, w0, w20
	ldrh	w2, [x2]
	cmp	w0, w2
	ble	.L1421
	ldrh	w0, [x4, x3]
	add	w2, w20, 8
	and	w0, w0, 2047
	cmp	w0, w2
	ble	.L1423
	cbz	w1, .L1421
	ldr	w0, [x4, x3]
	add	w1, w21, 4
	ubfx	x0, x0, 11, 8
	cmp	w0, w1
	bgt	.L1421
.L1423:
	stp	x4, x8, [x29, 104]
	mov	w2, 1
	str	x3, [x29, 120]
	mov	w1, 0
	mov	w0, w28
	bl	gc_add_sblk
	mov	w0, 1
	strh	w0, [x26, 2192]
	ldr	x0, [x29, 152]
	add	w25, w25, 1
	ldp	x4, x8, [x29, 104]
	ldr	x3, [x29, 120]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L1421
	adrp	x0, .LANCHOR11
	ldr	w6, [x4, x3]
	ldrh	w5, [x4, x3]
	ldr	x1, [x0, #:lo12:.LANCHOR11]
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	ubfx	x6, x6, 11, 8
	and	w5, w5, 2047
	ldrh	w4, [x26, 56]
	add	x3, x0, x3
	adrp	x0, .LC87
	add	x0, x0, :lo12:.LC87
	ldrb	w2, [x3, 2]
	ldrh	w3, [x1, x8, lsl 1]
	mov	w1, w28
	ubfx	x2, x2, 5, 3
	b	.L1506
.L1442:
	mov	w25, 0
	mov	w23, 0
	b	.L1414
.L1430:
	ldr	w3, [x0]
	ubfx	x4, x3, 11, 8
	cmp	w21, w4
	bhi	.L1429
	ldrb	w6, [x0, 2]
	tst	w6, 24
	beq	.L1429
	sub	w4, w4, w21
	bfi	w3, w4, 11, 8
	str	w3, [x0]
.L1429:
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 65535
	b	.L1428
.L1436:
	ldrh	w3, [x0]
	and	w4, w3, 2047
	cmp	w4, w20
	blt	.L1435
	ldrb	w5, [x0, 2]
	and	w5, w5, 24
	cmp	w5, 16
	beq	.L1435
	sub	w4, w4, w20
	bfi	w3, w4, 0, 11
	strh	w3, [x0]
.L1435:
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 65535
	b	.L1434
.L1441:
	mov	w25, 0
	mov	w23, 0
	b	.L1391
.L1440:
	mov	w0, 0
	b	.L1386
	.size	gc_static_wearleveling, .-gc_static_wearleveling
	.section	.text.zftl_sblk_list_init,"ax",@progbits
	.align	2
	.global	zftl_sblk_list_init
	.type	zftl_sblk_list_init, %function
zftl_sblk_list_init:
	stp	x29, x30, [sp, -208]!
	adrp	x8, .LANCHOR4
	mov	w0, 6
	mov	w1, 0
	add	x29, sp, 0
	stp	x27, x28, [sp, 80]
	adrp	x28, .LANCHOR8
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR105
	ldrh	w2, [x28, #:lo12:.LANCHOR8]
	mov	w27, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR103
	stp	x23, x24, [sp, 48]
	adrp	x21, .LANCHOR97
	stp	x25, x26, [sp, 64]
	adrp	x26, .LANCHOR69
	mul	w2, w2, w0
	ldr	x0, [x8, #:lo12:.LANCHOR4]
	str	x8, [x29, 192]
	adrp	x25, .LANCHOR109
	adrp	x24, .LANCHOR111
	adrp	x23, .LANCHOR113
	bl	ftl_memset
	strh	wzr, [x25, #:lo12:.LANCHOR109]
	adrp	x0, .LANCHOR115
	adrp	x3, .LANCHOR85
	adrp	x2, .LANCHOR91
	mov	w1, 32
	strh	w1, [x0, #:lo12:.LANCHOR115]
	adrp	x11, .LANCHOR110
	ldrb	w0, [x3, #:lo12:.LANCHOR85]
	adrp	x10, .LANCHOR112
	ldrh	w1, [x2, #:lo12:.LANCHOR91]
	adrp	x7, .LANCHOR114
	adrp	x6, .LANCHOR96
	adrp	x5, .LANCHOR101
	adrp	x4, .LANCHOR98
	ldr	x8, [x29, 192]
	str	xzr, [x11, #:lo12:.LANCHOR110]
	mul	w1, w0, w1
	mov	w0, 32768
	str	xzr, [x10, #:lo12:.LANCHOR112]
	str	xzr, [x7, #:lo12:.LANCHOR114]
	str	xzr, [x6, #:lo12:.LANCHOR96]
	sdiv	w0, w0, w1
	str	xzr, [x5, #:lo12:.LANCHOR101]
	str	xzr, [x4, #:lo12:.LANCHOR98]
	strh	wzr, [x24, #:lo12:.LANCHOR111]
	strh	wzr, [x23, #:lo12:.LANCHOR113]
	sxth	w0, w0
	str	w0, [x29, 204]
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	strh	wzr, [x22, #:lo12:.LANCHOR103]
	strh	wzr, [x21, #:lo12:.LANCHOR97]
	strh	wzr, [x20, #:lo12:.LANCHOR105]
	strh	wzr, [x0, 146]
	ldrsh	w19, [x0, 134]
	add	x0, x28, :lo12:.LANCHOR8
	str	x0, [x29, 192]
	adrp	x0, .LANCHOR152
	add	x0, x0, :lo12:.LANCHOR152
	adrp	x28, .LC0
	str	x0, [x29, 112]
	add	x0, x28, :lo12:.LC0
	stp	x2, x3, [x29, 120]
	stp	x4, x5, [x29, 136]
	stp	x6, x7, [x29, 152]
	stp	x10, x11, [x29, 168]
	str	x8, [x29, 184]
	str	x0, [x29, 104]
.L1508:
	ldr	x0, [x29, 192]
	ldrh	w0, [x0]
	cmp	w19, w0
	blt	.L1525
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	ldrh	w1, [x25, #:lo12:.LANCHOR109]
	ldp	x27, x28, [sp, 80]
	strh	w1, [x0, 114]
	ldrh	w1, [x24, #:lo12:.LANCHOR111]
	strh	w1, [x0, 118]
	ldrh	w1, [x23, #:lo12:.LANCHOR113]
	strh	w1, [x0, 116]
	ldrh	w1, [x22, #:lo12:.LANCHOR103]
	strh	w1, [x0, 122]
	ldrh	w1, [x21, #:lo12:.LANCHOR97]
	strh	w1, [x0, 120]
	ldrh	w1, [x20, #:lo12:.LANCHOR105]
	strh	w1, [x0, 124]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 208
	ret
.L1525:
	adrp	x0, .LANCHOR9
	sxtw	x2, w19
	ldr	x3, [x0, #:lo12:.LANCHOR9]
	add	x28, x3, x2, lsl 2
	ldrb	w5, [x28, 3]
	cbz	w5, .L1526
	ldr	x0, [x29, 128]
	mov	w1, 0
	ldr	x6, [x26, #:lo12:.LANCHOR69]
	ldrb	w7, [x0, #:lo12:.LANCHOR85]
	ldr	x0, [x29, 120]
	ldrh	w8, [x0, #:lo12:.LANCHOR91]
	mov	w0, 0
.L1510:
	cmp	w1, w7
	blt	.L1513
	cbz	w0, .L1514
	mov	w1, 32768
	sdiv	w0, w1, w0
	add	w0, w0, 1
	sxth	w0, w0
.L1509:
	ldr	x3, [x29, 184]
	mov	w1, 6
	smull	x1, w19, w1
	ldr	x4, [x3, #:lo12:.LANCHOR4]
	add	x5, x4, x1
	strh	w0, [x5, 4]
	mov	w0, -1
	strh	w0, [x5, 2]
	strh	w0, [x4, x1]
	mov	w1, 224
	ldrb	w0, [x28, 2]
	and	w0, w0, 224
	cmp	w0, 32
	ccmp	w0, w1, 4, ne
	beq	.L1515
	adrp	x1, .LANCHOR12
	ldr	x1, [x1, #:lo12:.LANCHOR12]
	ldrh	w4, [x1, 16]
	cmp	w19, w4
	beq	.L1515
	ldrh	w4, [x1, 48]
	cmp	w19, w4
	beq	.L1515
	ldrh	w1, [x1, 80]
	cmp	w19, w1
	beq	.L1515
	cmp	w0, 64
	bne	.L1516
	ldr	x0, [x29, 144]
	add	x2, x22, :lo12:.LANCHOR103
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR101
.L1532:
	bl	_insert_data_list
.L1515:
	add	w19, w19, 1
	sxth	w19, w19
	b	.L1508
.L1513:
	asr	w4, w5, w1
	tbnz	x4, 0, .L1511
	add	w0, w8, w0
	sxth	w0, w0
.L1512:
	add	w1, w1, 1
	b	.L1510
.L1511:
	ldrh	w4, [x6, 146]
	add	w4, w4, 1
	strh	w4, [x6, 146]
	b	.L1512
.L1514:
	ldrb	w1, [x28, 2]
	mov	w4, -1
	orr	w1, w1, -32
	strb	w1, [x28, 2]
	adrp	x1, .LANCHOR11
	ldr	x1, [x1, #:lo12:.LANCHOR11]
	strh	w4, [x1, x2, lsl 1]
	b	.L1509
.L1526:
	ldr	w0, [x29, 204]
	b	.L1509
.L1516:
	cmp	w0, 96
	bne	.L1517
	ldr	x0, [x29, 152]
	add	x2, x20, :lo12:.LANCHOR105
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR96
	b	.L1532
.L1517:
	cmp	w0, 160
	bne	.L1518
	ldr	x0, [x29, 136]
	add	x2, x21, :lo12:.LANCHOR97
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR98
	b	.L1532
.L1518:
	cbnz	w0, .L1515
	adrp	x0, .LANCHOR11
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrh	w2, [x0, x2, lsl 1]
	cbz	w2, .L1519
	cmp	w27, 2
	bgt	.L1520
	mov	w1, w19
	adrp	x0, .LC88
	add	x0, x0, :lo12:.LC88
	bl	printf
	ldrb	w0, [x28, 2]
	add	w27, w27, 1
	sxth	w27, w27
	tbz	x0, 4, .L1521
	mov	w1, 5
.L1531:
	bfi	w0, w1, 5, 3
	strb	w0, [x28, 2]
	mov	w2, 0
	mov	w1, 1
	mov	w0, w19
	bl	gc_add_sblk
	b	.L1515
.L1521:
	mov	w1, 2
	b	.L1531
.L1520:
	ldp	x0, x1, [x29, 104]
	mov	w2, 656
	bl	printf
.L1519:
	ldrb	w0, [x28, 2]
	ands	w0, w0, 24
	bne	.L1523
	ldr	x0, [x29, 176]
	add	x2, x25, :lo12:.LANCHOR109
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR110
.L1533:
	bl	_insert_free_list
	b	.L1515
.L1523:
	cmp	w0, 16
	bne	.L1524
	ldr	x0, [x29, 168]
	add	x2, x24, :lo12:.LANCHOR111
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR112
	b	.L1533
.L1524:
	ldr	x0, [x29, 160]
	add	x2, x23, :lo12:.LANCHOR113
	mov	w1, w19
	add	x0, x0, :lo12:.LANCHOR114
	b	.L1533
	.size	zftl_sblk_list_init, .-zftl_sblk_list_init
	.section	.text.ftl_open_sblk_init,"ax",@progbits
	.align	2
	.global	ftl_open_sblk_init
	.type	ftl_open_sblk_init, %function
ftl_open_sblk_init:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR85
	stp	x23, x24, [sp, 48]
	adrp	x22, .LC75
	stp	x19, x20, [sp, 16]
	adrp	x24, .LANCHOR100
	mov	x19, x0
	mov	w23, w1
	add	x24, x24, :lo12:.LANCHOR100
	add	x21, x21, :lo12:.LANCHOR85
	add	x22, x22, :lo12:.LC75
	stp	x25, x26, [sp, 64]
.L1535:
	mov	w25, 65535
.L1536:
	mov	w0, w23
	bl	ftl_alloc_sblk
	and	w20, w0, 65535
	cmp	w20, w25
	beq	.L1536
	mov	w1, 0
	mov	w0, w20
	bl	ftl_erase_sblk
	add	x1, x19, 16
	mov	w0, w20
	bl	ftl_get_blk_list_in_sblk
	and	w0, w0, 255
	ldrh	w1, [x24]
	cmp	w23, 2
	strb	w0, [x19, 9]
	strh	w20, [x19]
	strh	wzr, [x19, 2]
	mul	w0, w1, w0
	strb	wzr, [x19, 5]
	strh	w0, [x19, 6]
	strh	wzr, [x19, 10]
	strb	w23, [x19, 4]
	beq	.L1539
	ldrb	w0, [x21]
	mul	w0, w1, w0
	and	w0, w0, 65535
.L1537:
	ldrb	w2, [x21]
	adrp	x26, .LANCHOR11
	strh	w0, [x19, 12]
	ubfiz	x25, x20, 1, 16
	mul	w2, w2, w1
	adrp	x1, .LANCHOR123
	ldr	x3, [x1, #:lo12:.LANCHOR123]
	mov	w1, 255
	lsl	w2, w2, 2
	add	x0, x3, x0, uxth 2
	bl	ftl_memset
	ldr	x0, [x26, #:lo12:.LANCHOR11]
	ldrh	w1, [x19, 6]
	strh	w1, [x0, x25]
	ldrb	w0, [x19, 9]
	cbnz	w0, .L1534
	mov	w1, w20
	mov	x0, x22
	bl	printf
	ldr	x0, [x26, #:lo12:.LANCHOR11]
	mov	w1, -1
	strh	w1, [x0, x25]
	mov	w0, 7
	strb	w0, [x19, 4]
	b	.L1535
.L1539:
	mov	w0, 0
	b	.L1537
.L1534:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	ftl_open_sblk_init, .-ftl_open_sblk_init
	.section	.text.pm_free_sblk,"ax",@progbits
	.align	2
	.global	pm_free_sblk
	.type	pm_free_sblk, %function
pm_free_sblk:
	stp	x29, x30, [sp, -384]!
	adrp	x0, .LANCHOR153
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldrh	w1, [x0, #:lo12:.LANCHOR153]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	cmp	w1, 128
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	bls	.L1543
	adrp	x1, .LANCHOR154
	adrp	x0, .LC0
	mov	w2, 94
	add	x1, x1, :lo12:.LANCHOR154
	add	x0, x0, :lo12:.LC0
	bl	printf
.L1543:
	adrp	x5, .LANCHOR69
	mov	x26, x5
	ldrh	w3, [x19, #:lo12:.LANCHOR153]
	mov	w1, 0
	ldr	x0, [x5, #:lo12:.LANCHOR69]
	mov	w19, 0
	mov	w4, 65535
	add	x0, x0, 416
	ldrh	w2, [x0, 272]
.L1546:
	ldrh	w6, [x0]
	cmp	w6, w4
	beq	.L1544
	add	w1, w1, 1
	and	w1, w1, 65535
.L1544:
	cmp	w1, w2
	bcs	.L1545
	cmp	w1, w3
	bcs	.L1545
	add	w19, w19, 1
	add	x0, x0, 2
	and	w19, w19, 65535
	cmp	w19, 128
	bne	.L1546
.L1545:
	add	w19, w19, 1
	mov	w0, 128
	and	w19, w19, 65535
	add	x22, x29, 128
	cmp	w19, 129
	mov	w2, 256
	csel	w19, w19, w0, ne
	mov	w1, 0
	mov	x0, x22
	adrp	x23, .LANCHOR81
	bl	ftl_memset
	adrp	x0, .LANCHOR80
	ldr	x6, [x26, #:lo12:.LANCHOR69]
	mov	w2, 24
	ldrb	w11, [x23, #:lo12:.LANCHOR81]
	ldrh	w10, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR31
	add	x4, x6, 704
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	ldrh	w1, [x6, 698]
	sub	w2, w2, w0
	sub	w0, w2, w10
	add	x1, x1, 176
	mov	w2, 1
	add	x1, x6, x1, lsl 2
	lsl	w2, w2, w0
	sub	w2, w2, #1
.L1548:
	cmp	x1, x4
	bne	.L1551
	adrp	x24, .LANCHOR85
	adrp	x25, .LANCHOR100
	adrp	x27, .LC89
	adrp	x28, .LANCHOR19
	ldrb	w21, [x24, #:lo12:.LANCHOR85]
	add	x23, x23, :lo12:.LANCHOR81
	ldrh	w0, [x25, #:lo12:.LANCHOR100]
	add	x27, x27, :lo12:.LC89
	add	x28, x28, :lo12:.LANCHOR19
	mov	x20, 0
	mov	w7, 65535
	str	wzr, [x29, 124]
	mul	w21, w21, w0
	and	w21, w21, 65535
.L1557:
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	and	w6, w20, 65535
	ldrb	w2, [x23]
	mov	w8, w20
	add	x1, x0, x20, sxtw 1
	ldrh	w3, [x1, 416]
	ldrh	w1, [x0, 692]
	sdiv	w1, w1, w2
	cmp	w1, w3
	bne	.L1552
	ldrb	w1, [x24, #:lo12:.LANCHOR85]
	ldrh	w2, [x25, #:lo12:.LANCHOR100]
	mul	w1, w1, w2
	strh	w1, [x22, x20, lsl 1]
.L1552:
	ldrh	w2, [x22, x20, lsl 1]
	cmp	w2, w21
	bcs	.L1553
	cmp	w2, 0
	ldr	w1, [x29, 124]
	csel	w21, w21, w2, eq
	csel	w1, w1, w6, eq
	str	w1, [x29, 124]
.L1553:
	ldrh	w1, [x0, 74]
	cmp	w1, 2
	bls	.L1554
	mov	w1, 65535
	cmp	w3, w1
	beq	.L1554
	adrp	x4, .LANCHOR9
	ubfiz	x1, x3, 2, 16
	ldrh	w0, [x0, 92]
	ldr	x4, [x4, #:lo12:.LANCHOR9]
	add	w0, w0, 4
	ldrh	w4, [x4, x1]
	and	w4, w4, 2047
	cmp	w4, w0
	bgt	.L1554
	mov	w1, w8
	str	w6, [x29, 104]
	str	w8, [x29, 112]
	mov	x0, x27
	bl	printf
	ldr	w6, [x29, 104]
	ldr	w8, [x29, 112]
	mov	w7, w6
.L1554:
	ldrh	w0, [x22, x20, lsl 1]
	cbnz	w0, .L1555
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	sxtw	x6, w8
	add	x1, x6, 208
	ldrh	w3, [x0, x1, lsl 1]
	mov	w1, 65535
	cmp	w3, w1
	beq	.L1555
	ldr	w1, [x28]
	tbz	x1, 12, .L1556
	ldrh	w4, [x0, 688]
	mov	w2, 0
	str	x6, [x29, 104]
	mov	w1, w8
	str	w7, [x29, 112]
	adrp	x0, .LC90
	add	x0, x0, :lo12:.LC90
	bl	printf
	ldr	w7, [x29, 112]
	ldr	x6, [x29, 104]
.L1556:
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	add	x6, x6, 208
	str	w7, [x29, 104]
	str	x6, [x29, 112]
	ldrh	w0, [x0, x6, lsl 1]
	bl	ftl_free_sblk
	ldr	x0, [x26, #:lo12:.LANCHOR69]
	mov	w1, -1
	ldr	x6, [x29, 112]
	ldr	w7, [x29, 104]
	strh	w1, [x0, x6, lsl 1]
	ldrh	w1, [x0, 688]
	sub	w1, w1, #1
	strh	w1, [x0, 688]
.L1555:
	add	x20, x20, 1
	cmp	w19, w20, uxth
	bhi	.L1557
	mov	w0, 65535
	cmp	w7, w0
	ldr	w0, [x29, 124]
	ldp	x19, x20, [sp, 16]
	csel	w0, w0, w7, eq
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 384
	ret
.L1551:
	ldr	w0, [x4]
	add	x7, x6, 416
	mov	x3, 0
	lsr	w0, w0, w10
	and	w0, w0, w2
	udiv	w0, w0, w11
	and	w0, w0, 65535
.L1550:
	ldrh	w8, [x7]
	cmp	w8, w0
	bne	.L1549
	ldrh	w8, [x22, x3, lsl 1]
	add	w8, w8, 1
	strh	w8, [x22, x3, lsl 1]
.L1549:
	add	x3, x3, 1
	add	x7, x7, 2
	cmp	w19, w3, uxth
	bhi	.L1550
	add	x4, x4, 4
	b	.L1548
	.size	pm_free_sblk, .-pm_free_sblk
	.section	.text.ftl_memcpy,"ax",@progbits
	.align	2
	.global	ftl_memcpy
	.type	ftl_memcpy, %function
ftl_memcpy:
	uxtw	x2, w2
	b	memcpy
	.size	ftl_memcpy, .-ftl_memcpy
	.section	.text.flash_info_data_init,"ax",@progbits
	.align	2
	.global	flash_info_data_init
	.type	flash_info_data_init, %function
flash_info_data_init:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR19
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	str	x19, [sp, 16]
	tbz	x0, 12, .L1570
	adrp	x2, .LANCHOR155
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR155
	mov	w1, 120
	add	x0, x0, :lo12:.LC91
	bl	printf
.L1570:
	adrp	x19, .LANCHOR6
	mov	w2, 2048
	mov	w1, 0
	ldr	x0, [x19, #:lo12:.LANCHOR6]
	bl	ftl_memset
	ldr	x0, [x19, #:lo12:.LANCHOR6]
	mov	w1, 21321
	movk	w1, 0x5359, lsl 16
	mov	w2, 32
	add	x0, x0, 80
	str	w1, [x0, -80]
	mov	w1, 2032
	str	w1, [x0, -72]
	mov	w1, 1
	strh	w1, [x0, -64]
	adrp	x1, .LANCHOR25
	add	x1, x1, :lo12:.LANCHOR25
	bl	ftl_memcpy
	ldr	x0, [x19, #:lo12:.LANCHOR6]
	mov	w2, 32
	ldr	x19, [sp, 16]
	adrp	x1, .LANCHOR32
	ldp	x29, x30, [sp], 32
	add	x1, x1, :lo12:.LANCHOR32
	add	x0, x0, 48
	b	ftl_memcpy
	.size	flash_info_data_init, .-flash_info_data_init
	.section	.text.ftl_memcpy32,"ax",@progbits
	.align	2
	.global	ftl_memcpy32
	.type	ftl_memcpy32, %function
ftl_memcpy32:
	mov	x3, 0
.L1576:
	cmp	w2, w3
	bhi	.L1577
	ret
.L1577:
	ldr	w4, [x1, x3, lsl 2]
	str	w4, [x0, x3, lsl 2]
	add	x3, x3, 1
	b	.L1576
	.size	ftl_memcpy32, .-ftl_memcpy32
	.section	.text.ftl_memcmp,"ax",@progbits
	.align	2
	.global	ftl_memcmp
	.type	ftl_memcmp, %function
ftl_memcmp:
	uxtw	x2, w2
	b	memcmp
	.size	ftl_memcmp, .-ftl_memcmp
	.section	.text.rknand_get_clk_rate,"ax",@progbits
	.align	2
	.global	rknand_get_clk_rate
	.type	rknand_get_clk_rate, %function
rknand_get_clk_rate:
	mov	w0, 19712
	movk	w0, 0x8d2, lsl 16
	ret
	.size	rknand_get_clk_rate, .-rknand_get_clk_rate
	.section	.text.ftl_malloc,"ax",@progbits
	.align	2
	.global	ftl_malloc
	.type	ftl_malloc, %function
ftl_malloc:
	mov	w1, 0
	sxtw	x0, w0
	b	kmalloc
	.size	ftl_malloc, .-ftl_malloc
	.section	.text.nandc_init,"ax",@progbits
	.align	2
	.global	nandc_init
	.type	nandc_init, %function
nandc_init:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR19
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	str	wzr, [x29, 56]
	tbz	x0, 12, .L1582
	adrp	x1, .LANCHOR156
	adrp	x0, .LC92
	mov	x2, x19
	add	x1, x1, :lo12:.LANCHOR156
	add	x0, x0, :lo12:.LC92
	bl	printf
.L1582:
	adrp	x20, .LANCHOR27
	mov	w0, 6
	ldr	w2, [x19, 352]
	mov	w1, 12336
	strb	w0, [x20, #:lo12:.LANCHOR27]
	adrp	x0, .LANCHOR7
	movk	w1, 0x5638, lsl 16
	mov	x22, x0
	str	x19, [x0, #:lo12:.LANCHOR7]
	cmp	w2, w1
	bne	.L1583
	mov	w0, 8
	strb	w0, [x20, #:lo12:.LANCHOR27]
.L1583:
	ldr	w1, [x19, 128]
	mov	w0, 12336
	movk	w0, 0x5639, lsl 16
	cmp	w1, w0
	bne	.L1584
	mov	w0, 9
	strb	w0, [x20, #:lo12:.LANCHOR27]
.L1584:
	ldrb	w0, [x20, #:lo12:.LANCHOR27]
	cmp	w0, 9
	adrp	x0, .LANCHOR50
	bne	.L1585
	mov	w1, 1
	strb	w1, [x0, #:lo12:.LANCHOR50]
	ldr	w0, [x29, 56]
	mov	w1, 2
	orr	w0, w0, 256
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	bfi	w0, w1, 18, 3
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	str	w0, [x19]
	str	wzr, [x19, 520]
	mov	w0, 4161
	str	w0, [x19, 4]
	mov	w0, 8321
	str	w0, [x19, 8]
	mov	w0, 4099
	movk	w0, 0x10, lsl 16
	str	w0, [x19, 80]
	mov	w0, 38
	str	w0, [x19, 84]
	mov	w0, 39
	str	w0, [x19, 84]
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L1587
	ldr	w1, [x19]
	ldr	w2, [x19, 8]
	ldr	w3, [x19, 80]
	ldr	w4, [x19, 84]
	ldr	w5, [x19, 88]
.L1600:
	adrp	x0, .LC93
	add	x0, x0, :lo12:.LC93
	bl	printf
.L1587:
	adrp	x0, .LANCHOR51
	mov	w1, 1
	strb	w1, [x0, #:lo12:.LANCHOR51]
	adrp	x0, .LANCHOR53
	strh	wzr, [x0, #:lo12:.LANCHOR53]
	adrp	x0, .LANCHOR49
	strb	wzr, [x0, #:lo12:.LANCHOR49]
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L1581
	ldrb	w1, [x20, #:lo12:.LANCHOR27]
	adrp	x0, .LC94
	add	x0, x0, :lo12:.LC94
	bl	printf
.L1581:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L1585:
	strb	wzr, [x0, #:lo12:.LANCHOR50]
	mov	w1, 1
	ldr	w0, [x29, 56]
	orr	w0, w0, 256
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	bfi	w0, w1, 24, 3
	str	w0, [x29, 56]
	ldr	w0, [x29, 56]
	str	w0, [x19]
	str	wzr, [x19, 336]
	mov	w0, 4193
	str	w0, [x19, 4]
	mov	w0, 8321
	str	w0, [x19, 344]
	mov	w0, 4099
	movk	w0, 0x10, lsl 16
	str	w0, [x19, 304]
	mov	w0, 38
	str	w0, [x19, 308]
	mov	w0, 39
	str	w0, [x19, 308]
	mov	w0, 2048
	bl	ftl_malloc
	adrp	x1, .LANCHOR52
	str	x0, [x1, #:lo12:.LANCHOR52]
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L1587
	ldr	x0, [x22, #:lo12:.LANCHOR7]
	ldr	w1, [x0]
	ldr	w2, [x0, 344]
	ldr	w3, [x0, 304]
	ldr	w4, [x0, 308]
	ldr	w5, [x0, 312]
	b	.L1600
	.size	nandc_init, .-nandc_init
	.section	.text.zbuf_init,"ax",@progbits
	.align	2
	.global	zbuf_init
	.type	zbuf_init, %function
zbuf_init:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LANCHOR55
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	add	x19, x0, :lo12:.LANCHOR55
	stp	x21, x22, [sp, 32]
	mov	x20, x0
	adrp	x22, .LANCHOR68
	add	x22, x22, :lo12:.LANCHOR68
	mov	w21, 0
.L1602:
	and	w0, w21, 255
	strb	w0, [x19, 1]
	add	w1, w0, 1
	ldrb	w0, [x22]
	strb	w1, [x19]
	add	w21, w21, 1
	strb	wzr, [x19, 2]
	add	x19, x19, 64
	str	xzr, [x19, -48]
	lsl	w0, w0, 9
	bl	ftl_malloc
	str	x0, [x19, -56]
	mov	w0, 64
	bl	ftl_malloc
	str	x0, [x19, -40]
	cmp	w21, 16
	bne	.L1602
	add	x0, x20, :lo12:.LANCHOR55
	mov	w1, -1
	strb	w1, [x0, 960]
	adrp	x0, .LANCHOR56
	strb	wzr, [x0, #:lo12:.LANCHOR56]
	adrp	x0, .LANCHOR57
	ldp	x19, x20, [sp, 16]
	strb	w21, [x0, #:lo12:.LANCHOR57]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
	.size	zbuf_init, .-zbuf_init
	.section	.text.gc_init,"ax",@progbits
	.align	2
	.global	gc_init
	.type	gc_init, %function
gc_init:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR90
	mov	w2, 2216
	mov	w1, 0
	add	x29, sp, 0
	strb	wzr, [x0, #:lo12:.LANCHOR90]
	adrp	x0, .LANCHOR157
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR76
	strb	wzr, [x0, #:lo12:.LANCHOR157]
	adrp	x0, .LANCHOR158
	add	x19, x20, :lo12:.LANCHOR76
	str	wzr, [x0, #:lo12:.LANCHOR158]
	adrp	x0, .LANCHOR102
	strh	wzr, [x0, #:lo12:.LANCHOR102]
	mov	x0, x19
	bl	ftl_memset
	str	xzr, [x19, 8]
	mov	w0, -1
	strh	w0, [x20, #:lo12:.LANCHOR76]
	adrp	x0, .LANCHOR100
	adrp	x4, .LANCHOR108
	adrp	x20, .LANCHOR91
	ldrh	w1, [x0, #:lo12:.LANCHOR100]
	lsr	w2, w1, 1
	lsr	w0, w1, 2
	strh	w2, [x19, 38]
	adrp	x2, .LANCHOR93
	strh	w0, [x19, 36]
	adrp	x19, .LANCHOR85
	strh	wzr, [x2, #:lo12:.LANCHOR93]
	adrp	x2, .LANCHOR94
	ldrb	w3, [x19, #:lo12:.LANCHOR85]
	strh	wzr, [x2, #:lo12:.LANCHOR94]
	adrp	x2, .LANCHOR95
	strh	wzr, [x2, #:lo12:.LANCHOR95]
	mul	w2, w1, w3
	and	w2, w2, 65535
	sub	w5, w2, #32
	strh	w5, [x4, #:lo12:.LANCHOR108]
	adrp	x4, .LANCHOR106
	strh	w2, [x4, #:lo12:.LANCHOR106]
	adrp	x2, .LANCHOR99
	strh	w1, [x2, #:lo12:.LANCHOR99]
	adrp	x1, .LANCHOR159
	mov	w2, 4
	strh	w2, [x1, #:lo12:.LANCHOR159]
	adrp	x1, .LANCHOR75
	strh	w0, [x1, #:lo12:.LANCHOR75]
	ldrh	w0, [x20, #:lo12:.LANCHOR91]
	mul	w0, w0, w3
	lsl	w0, w0, 2
	bl	ftl_malloc
	adrp	x1, .LANCHOR160
	str	x0, [x1, #:lo12:.LANCHOR160]
	ldrb	w1, [x19, #:lo12:.LANCHOR85]
	ldrh	w0, [x20, #:lo12:.LANCHOR91]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_malloc
	adrp	x1, .LANCHOR161
	str	x0, [x1, #:lo12:.LANCHOR161]
	ldrh	w1, [x20, #:lo12:.LANCHOR91]
	ldrb	w0, [x19, #:lo12:.LANCHOR85]
	mul	w0, w1, w0
	bl	ftl_malloc
	adrp	x1, .LANCHOR88
	str	x0, [x1, #:lo12:.LANCHOR88]
	ldrb	w1, [x19, #:lo12:.LANCHOR85]
	ldrh	w0, [x20, #:lo12:.LANCHOR91]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_malloc
	adrp	x1, .LANCHOR82
	str	x0, [x1, #:lo12:.LANCHOR82]
	ldrb	w1, [x19, #:lo12:.LANCHOR85]
	ldrh	w0, [x20, #:lo12:.LANCHOR91]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_malloc
	adrp	x1, .LANCHOR162
	ldp	x19, x20, [sp, 16]
	str	x0, [x1, #:lo12:.LANCHOR162]
	adrp	x0, .LANCHOR104
	adrp	x1, .LANCHOR92
	ldp	x29, x30, [sp], 32
	ldrh	w0, [x0, #:lo12:.LANCHOR104]
	lsr	w0, w0, 2
	strh	w0, [x1, #:lo12:.LANCHOR92]
	ret
	.size	gc_init, .-gc_init
	.section	.text.ftl_free,"ax",@progbits
	.align	2
	.global	ftl_free
	.type	ftl_free, %function
ftl_free:
	ret
	.size	ftl_free, .-ftl_free
	.section	.text.js_hash,"ax",@progbits
	.align	2
	.global	js_hash
	.type	js_hash, %function
js_hash:
	mov	x4, x0
	mov	w0, 42982
	mov	x3, 0
	movk	w0, 0x47c6, lsl 16
.L1609:
	cmp	w1, w3
	bhi	.L1610
	ret
.L1610:
	lsr	w2, w0, 2
	ldrb	w5, [x4, x3]
	add	w2, w2, w0, lsl 5
	add	x3, x3, 1
	add	w2, w2, w5
	eor	w0, w0, w2
	b	.L1609
	.size	js_hash, .-js_hash
	.section	.text.ftl_debug_info_fill,"ax",@progbits
	.align	2
	.global	ftl_debug_info_fill
	.type	ftl_debug_info_fill, %function
ftl_debug_info_fill:
	adrp	x3, .LANCHOR68
	ldrb	w3, [x3, #:lo12:.LANCHOR68]
	cmp	w3, 8
	bls	.L1615
	and	w0, w0, 255
	cmp	x2, 0
	ccmp	w0, 2, 0, ne
	bne	.L1613
	stp	x29, x30, [sp, -16]!
	mov	x6, x1
	mov	w1, 21320
	mov	x0, x2
	add	x29, sp, 0
	movk	w1, 0x4841, lsl 16
	str	w1, [x6]
	mov	w1, 1024
	bl	js_hash
	str	w0, [x6, 4]
	mov	w0, 0
	ldp	x29, x30, [sp], 16
	ret
.L1613:
	stp	wzr, wzr, [x1]
.L1615:
	mov	w0, 0
	ret
	.size	ftl_debug_info_fill, .-ftl_debug_info_fill
	.section	.text.timer_get_time,"ax",@progbits
	.align	2
	.global	timer_get_time
	.type	timer_get_time, %function
timer_get_time:
	mov	w0, 0
	ret
	.size	timer_get_time, .-timer_get_time
	.section	.text.FlashCs123Init,"ax",@progbits
	.align	2
	.global	FlashCs123Init
	.type	FlashCs123Init, %function
FlashCs123Init:
	ret
	.size	FlashCs123Init, .-FlashCs123Init
	.section	.text.rk_nand_de_init,"ax",@progbits
	.align	2
	.global	rk_nand_de_init
	.type	rk_nand_de_init, %function
rk_nand_de_init:
	b	zftl_flash_de_init
	.size	rk_nand_de_init, .-rk_nand_de_init
	.section	.text.ftl_get_density,"ax",@progbits
	.align	2
	.global	ftl_get_density
	.type	ftl_get_density, %function
ftl_get_density:
	and	w0, w0, 255
	b	zftl_get_density
	.size	ftl_get_density, .-ftl_get_density
	.section	.text.ftl_get_capacity,"ax",@progbits
	.align	2
	.global	ftl_get_capacity
	.type	ftl_get_capacity, %function
ftl_get_capacity:
	adrp	x0, .LANCHOR73
	ldr	w0, [x0, #:lo12:.LANCHOR73]
	ret
	.size	ftl_get_capacity, .-ftl_get_capacity
	.section	.text.rknand_print_hex,"ax",@progbits
	.align	2
	.global	rknand_print_hex
	.type	rknand_print_hex, %function
rknand_print_hex:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LC96
	stp	x23, x24, [sp, 48]
	mov	x22, x1
	stp	x25, x26, [sp, 64]
	mov	w24, w2
	stp	x27, x28, [sp, 80]
	adrp	x25, .LC95
	mov	x27, x0
	uxtw	x26, w3
	add	x25, x25, :lo12:.LC95
	add	x21, x21, :lo12:.LC96
	stp	x19, x20, [sp, 16]
	mov	w23, 0
	mov	x19, 0
	mov	w20, 0
	adrp	x28, .LC97
.L1624:
	cmp	x26, x19
	bne	.L1630
	ldp	x19, x20, [sp, 16]
	adrp	x1, .LC97
	ldp	x21, x22, [sp, 32]
	add	x1, x1, :lo12:.LC97
	ldp	x23, x24, [sp, 48]
	adrp	x0, .LC98
	ldp	x25, x26, [sp, 64]
	add	x0, x0, :lo12:.LC98
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	b	printf
.L1630:
	cbnz	w20, .L1625
	mov	w3, w23
	mov	x2, x22
	mov	x1, x27
	mov	x0, x25
	bl	printf
.L1625:
	cmp	w24, 4
	bne	.L1626
	ldr	w1, [x22, x19, lsl 2]
.L1632:
	mov	x0, x21
	add	w20, w20, 1
	bl	printf
	cmp	w20, 15
	bls	.L1629
	mov	w20, 0
	add	x1, x28, :lo12:.LC97
	adrp	x0, .LC98
	add	x0, x0, :lo12:.LC98
	bl	printf
.L1629:
	add	x19, x19, 1
	add	w23, w23, w24
	b	.L1624
.L1626:
	cmp	w24, 2
	bne	.L1628
	ldrsh	w1, [x22, x19, lsl 1]
	b	.L1632
.L1628:
	ldrb	w1, [x22, x19]
	b	.L1632
	.size	rknand_print_hex, .-rknand_print_hex
	.section	.text.hynix_get_read_retry_default,"ax",@progbits
	.align	2
	.global	hynix_get_read_retry_default
	.type	hynix_get_read_retry_default, %function
hynix_get_read_retry_default:
	stp	x29, x30, [sp, -144]!
	mov	w2, -83
	mov	w1, -82
	add	x29, sp, 0
	stp	x25, x26, [sp, 64]
	mov	w25, w0
	adrp	x0, .LANCHOR6
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	cmp	w25, 2
	ldr	x26, [x0, #:lo12:.LANCHOR6]
	mov	w0, -84
	stp	x19, x20, [sp, 16]
	stp	x27, x28, [sp, 80]
	add	x24, x26, 128
	add	x21, x26, 112
	strb	w0, [x26, 128]
	mov	w0, -81
	strb	w25, [x26, 112]
	strb	w2, [x26, 129]
	strb	w1, [x26, 130]
	strb	w0, [x26, 131]
	bne	.L1634
	mov	w0, -89
	strb	w0, [x21, 16]
	adrp	x0, .LANCHOR163+17
	mov	w1, -9
	strb	w1, [x0, #:lo12:.LANCHOR163+17]
.L1698:
	mov	w27, 7
	b	.L1741
.L1634:
	cmp	w25, 3
	bne	.L1636
	mov	x5, 0
.L1637:
	sub	w0, w5, #80
	strb	w0, [x24, x5]
	add	x5, x5, 1
	cmp	x5, 8
	bne	.L1637
	mov	w27, w5
	mov	w28, w5
.L1635:
	sub	w0, w25, #1
	cmp	w0, 1
	bhi	.L1643
	adrp	x25, .LANCHOR23
	adrp	x26, .LANCHOR29
	add	x25, x25, :lo12:.LANCHOR23
	add	x26, x26, :lo12:.LANCHOR29
	mov	w23, 0
	mov	w5, 55
.L1644:
	ldrb	w0, [x25]
	cmp	w0, w23
	bhi	.L1650
.L1651:
	strb	w28, [x21, 1]
	strb	w27, [x21, 2]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L1636:
	cmp	w25, 4
	bne	.L1638
	mov	w5, -52
	strb	w5, [x26, 128]
	mov	w5, -65
	strb	w5, [x26, 129]
	mov	w5, -86
	strb	w5, [x26, 130]
	mov	w5, -85
	mov	w27, 8
	strb	w5, [x26, 131]
	mov	w28, w27
	mov	w5, -51
	strb	w2, [x26, 133]
	strb	w5, [x26, 132]
	strb	w1, [x26, 134]
	strb	w0, [x26, 135]
	b	.L1635
.L1638:
	cmp	w25, 5
	bne	.L1639
	mov	w0, 56
	strb	w0, [x26, 128]
	mov	w0, 57
	strb	w0, [x26, 129]
	mov	w0, 58
	mov	w27, 8
	strb	w0, [x26, 130]
	mov	w0, 59
	strb	w0, [x26, 131]
.L1741:
	mov	w28, 4
	b	.L1635
.L1639:
	cmp	w25, 6
	bne	.L1640
	mov	w0, 14
	strb	w0, [x26, 128]
	mov	w0, 15
	strb	w0, [x26, 129]
	mov	w0, 16
	mov	w27, 12
	strb	w0, [x26, 130]
	mov	w0, 17
	strb	w0, [x26, 131]
	b	.L1741
.L1640:
	cmp	w25, 7
	bne	.L1641
	mov	x0, 0
.L1642:
	sub	w1, w0, #80
	strb	w1, [x24, x0]
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L1642
	mov	w0, -44
	mov	w27, 12
	strb	w0, [x26, 136]
	mov	w28, 10
	mov	w0, -43
	strb	w0, [x26, 137]
	b	.L1635
.L1641:
	cmp	w25, 8
	bne	.L1698
	mov	w0, 6
	strb	w0, [x26, 128]
	mov	w0, 7
	strb	w0, [x26, 129]
	mov	w0, 9
	strb	w25, [x26, 130]
	strb	w0, [x26, 131]
	mov	w27, 50
	mov	w0, 10
	mov	w28, 5
	strb	w0, [x26, 132]
	b	.L1635
.L1650:
	ldrb	w0, [x26, w23, sxtw]
	mov	x1, 32
	mov	w19, 160
	mov	x20, 0
	umaddl	x19, w19, w0, x1
	adrp	x1, .LANCHOR7
	ubfiz	x0, x0, 8, 8
	ldr	x22, [x1, #:lo12:.LANCHOR7]
	add	x19, x21, x19
	add	x22, x22, x0
.L1645:
	str	w5, [x22, 2056]
	str	w5, [x29, 136]
	ldrb	w0, [x24, x20]
	str	w0, [x22, 2052]
	mov	x0, 1
	bl	udelay
	ldr	w0, [x22, 2048]
	strb	w0, [x19, x20]
	add	x20, x20, 1
	cmp	w28, w20, uxtb
	ldr	w5, [x29, 136]
	bhi	.L1645
	adrp	x2, .LANCHOR163
	add	x2, x2, :lo12:.LANCHOR163
	mov	x0, 0
.L1648:
	add	x7, x19, x0
	add	x4, x2, x0
	mov	x1, 1
.L1647:
	lsl	x3, x1, 2
	lsl	x8, x1, 3
	ldrb	w10, [x19, x0]
	add	x1, x1, 1
	cmp	x1, 7
	ldrb	w3, [x4, x3]
	add	w3, w3, w10
	strb	w3, [x7, x8]
	bne	.L1647
	add	x0, x0, 1
	cmp	x0, 4
	bne	.L1648
	add	w23, w23, 1
	strb	wzr, [x19, 16]
	strb	wzr, [x19, 24]
	and	w23, w23, 255
	strb	wzr, [x19, 32]
	strb	wzr, [x19, 40]
	strb	wzr, [x19, 48]
	strb	wzr, [x19, 41]
	strb	wzr, [x19, 49]
	b	.L1644
.L1643:
	sub	w0, w25, #3
	cmp	w0, 5
	bhi	.L1651
	mul	w24, w27, w28
	sub	w22, w28, #1
	and	x22, x22, 255
	mov	w20, 0
	asr	w23, w24, 1
	lsl	w0, w24, 4
	str	w0, [x29, 128]
	lsl	w0, w23, 1
	str	w0, [x29, 132]
	sbfiz	x0, x23, 1, 32
	sub	w24, w25, #5
	str	x0, [x29, 136]
	adrp	x0, .LANCHOR23
	add	x0, x0, :lo12:.LANCHOR23
	str	x0, [x29, 120]
	add	x0, x22, 1
	str	x0, [x29, 112]
.L1652:
	ldr	x0, [x29, 120]
	ldrb	w0, [x0]
	cmp	w0, w20
	bls	.L1651
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	mov	w19, 160
	ldrb	w22, [x0, w20, sxtw]
	mov	w0, w22
	bl	zftl_flash_exit_slc_mode
	mov	x0, 32
	ubfiz	x2, x22, 8, 8
	mov	w1, 255
	str	w1, [x29, 108]
	nop // between mem op and mult-accumulate
	umaddl	x19, w19, w22, x0
	adrp	x0, .LANCHOR7
	ldr	x0, [x0, #:lo12:.LANCHOR7]
	add	x19, x21, x19
	add	x22, x0, x2
	str	w1, [x22, 2056]
	bl	nandc_wait_flash_ready
	cmp	w25, 8
	ldr	w1, [x29, 108]
	bne	.L1653
	mov	w0, 120
	str	w0, [x22, 2056]
	str	wzr, [x22, 2052]
	mov	w0, 23
	str	wzr, [x22, 2052]
	mov	w1, 25
	str	wzr, [x22, 2052]
	add	x19, x26, 144
	str	w0, [x22, 2056]
	mov	w0, 4
	str	w0, [x22, 2056]
	str	w1, [x22, 2056]
	mov	w1, 218
	str	w1, [x22, 2056]
	mov	w1, 21
	str	wzr, [x22, 2056]
	str	wzr, [x22, 2052]
	str	wzr, [x22, 2052]
	str	w1, [x22, 2052]
.L1744:
	str	w0, [x22, 2052]
	mov	w0, 48
	str	wzr, [x22, 2052]
	str	w0, [x22, 2056]
	bl	nandc_wait_flash_ready
	cmp	w24, 1
	ccmp	w25, 8, 4, hi
	beq	.L1699
	cmp	w25, 7
	mov	w0, 32
	mov	w1, 2
	csel	w1, w1, w0, ne
.L1660:
	adrp	x8, .LANCHOR164
	mov	x7, 0
	ldr	x0, [x8, #:lo12:.LANCHOR164]
.L1661:
	ldr	w10, [x22, 2048]
	strb	w10, [x0, x7]
	add	x7, x7, 1
	cmp	w1, w7, uxtb
	bhi	.L1661
	cmp	w25, 8
	bne	.L1662
	mov	w1, 0
.L1664:
	ldrb	w7, [x0]
	cmp	w7, 50
	beq	.L1663
	ldrb	w7, [x0, 1]
	cmp	w7, 5
	beq	.L1663
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 255
	cmp	w1, 8
	bne	.L1664
.L1665:
	adrp	x0, .LC99
	mov	w1, 0
	add	x0, x0, :lo12:.LC99
	bl	printf
.L1667:
	b	.L1667
.L1653:
	mov	w0, 54
	str	w0, [x22, 2056]
	cmp	w25, 4
	bne	.L1655
	mov	w0, 64
	str	w1, [x22, 2052]
	str	w0, [x22, 2048]
	mov	w0, 204
.L1742:
	str	w0, [x22, 2052]
	mov	w0, 77
	b	.L1743
.L1655:
	cmp	w24, 1
	bhi	.L1657
	ldrb	w0, [x26, 128]
	str	w0, [x22, 2052]
	mov	w0, 82
.L1743:
	str	w0, [x22, 2048]
.L1656:
	mov	w0, 22
	str	w0, [x22, 2056]
	mov	w0, 23
	str	w0, [x22, 2056]
	mov	w0, 4
	str	w0, [x22, 2056]
	mov	w0, 25
	str	w0, [x22, 2056]
	str	wzr, [x22, 2056]
	cmp	w25, 6
	str	wzr, [x22, 2052]
	str	wzr, [x22, 2052]
	bne	.L1658
	mov	w0, 31
	str	w0, [x22, 2052]
.L1659:
	mov	w0, 2
	b	.L1744
.L1657:
	cmp	w25, 7
	bne	.L1656
	mov	w0, 174
	str	w0, [x22, 2052]
	str	wzr, [x22, 2048]
	mov	w0, 176
	b	.L1742
.L1658:
	str	wzr, [x22, 2052]
	b	.L1659
.L1699:
	mov	w1, 16
	b	.L1660
.L1663:
	cmp	w1, 6
	bhi	.L1665
.L1666:
	ldr	x7, [x8, #:lo12:.LANCHOR164]
	mov	x0, 0
.L1676:
	ldr	w1, [x29, 128]
	cmp	w1, w0
	bgt	.L1677
	ldr	x1, [x8, #:lo12:.LANCHOR164]
	mov	w10, 8
	ldr	x0, [x29, 136]
	add	x8, x1, x0
.L1679:
	mov	x0, 0
.L1678:
	ldrh	w11, [x8, x0, lsl 1]
	mvn	w11, w11
	strh	w11, [x8, x0, lsl 1]
	add	x0, x0, 1
	cmp	w23, w0
	bgt	.L1678
	ldr	w0, [x29, 132]
	subs	w10, w10, #1
	add	x8, x8, x0, uxtw 1
	bne	.L1679
	mov	x10, x1
	mov	w11, 0
	mov	w16, 1
.L1680:
	mov	w0, 0
	mov	w8, 0
.L1684:
	mov	x14, x10
	lsl	w15, w16, w8
	mov	w13, 16
	mov	w12, 0
.L1682:
	ldrh	w17, [x14]
	ldr	x2, [x29, 136]
	bics	wzr, w15, w17
	cinc	w12, w12, eq
	add	x14, x14, x2
	subs	w13, w13, #1
	bne	.L1682
	cmp	w12, 8
	bls	.L1683
	orr	w0, w0, w15
	and	w0, w0, 65535
.L1683:
	add	w8, w8, 1
	cmp	w8, 16
	bne	.L1684
	strh	w0, [x10], 2
	add	w11, w11, 1
	cmp	w23, w11
	bgt	.L1680
	mov	x0, 0
	mov	w8, 0
.L1687:
	ldr	w10, [x1, x0]
	add	x0, x0, 4
	cmp	w10, 0
	cinc	w8, w8, eq
	cmp	x0, 32
	bne	.L1687
	cmp	w8, 7
	ble	.L1688
	mov	w3, 1024
	mov	w2, 1
	adrp	x0, .LC100
	add	x0, x0, :lo12:.LC100
	bl	rknand_print_hex
	adrp	x0, .LC99
	mov	w1, 0
	add	x0, x0, :lo12:.LC99
	bl	printf
.L1689:
	b	.L1689
.L1662:
	cmp	w25, 7
	bne	.L1668
	mov	w1, 0
.L1670:
	ldrb	w7, [x0]
	cmp	w7, 12
	beq	.L1669
	ldrb	w7, [x0, 1]
	cmp	w7, 10
	beq	.L1669
	add	w1, w1, 1
	add	x0, x0, 4
	and	w1, w1, 255
	cmp	w1, 8
	bne	.L1670
.L1671:
	adrp	x0, .LC99
	mov	w1, 0
	add	x0, x0, :lo12:.LC99
	bl	printf
.L1672:
	b	.L1672
.L1669:
	cmp	w1, 6
	bls	.L1666
	b	.L1671
.L1668:
	cmp	w25, 6
	bne	.L1666
	mov	x1, 0
.L1673:
	ldrb	w7, [x0, x1]
	cmp	w7, 12
	beq	.L1666
	add	x7, x0, x1
	ldrb	w7, [x7, 8]
	cmp	w7, 4
	beq	.L1666
	add	x1, x1, 1
	cmp	x1, 8
	bne	.L1673
	adrp	x0, .LC99
	mov	w1, 0
	add	x0, x0, :lo12:.LC99
	bl	printf
.L1675:
	b	.L1675
.L1677:
	ldr	w1, [x22, 2048]
	strb	w1, [x7, x0]
	add	x0, x0, 1
	b	.L1676
.L1688:
	cmp	w25, 6
	beq	.L1701
	cmp	w25, 7
	beq	.L1702
	cmp	w25, 8
	mov	x1, 5
	mov	x0, 8
	csel	x0, x0, x1, ne
.L1690:
	mov	w8, 0
.L1691:
	mov	x1, 0
.L1692:
	ldrb	w10, [x7, x1]
	strb	w10, [x19, x1]
	add	x1, x1, 1
	cmp	w28, w1, uxtb
	bhi	.L1692
	ldr	x1, [x29, 112]
	add	w8, w8, 1
	add	x19, x19, x0
	cmp	w27, w8
	add	x7, x7, x1
	bgt	.L1691
	mov	w19, 255
	str	w19, [x22, 2056]
	bl	nandc_wait_flash_ready
	cmp	w24, 1
	bhi	.L1694
	mov	w0, 54
	str	w0, [x22, 2056]
	ldrb	w0, [x26, 128]
	str	w0, [x22, 2052]
	str	wzr, [x22, 2048]
	mov	w0, 22
	str	w0, [x22, 2056]
	mov	w0, 48
	str	wzr, [x22, 2056]
	str	wzr, [x22, 2052]
	str	wzr, [x22, 2052]
	str	w19, [x22, 2052]
	str	w19, [x22, 2052]
	str	w19, [x22, 2052]
.L1745:
	str	w0, [x22, 2056]
	add	w20, w20, 1
	and	w20, w20, 255
	bl	nandc_wait_flash_ready
	b	.L1652
.L1701:
	mov	x0, 4
	b	.L1690
.L1702:
	mov	x0, 10
	b	.L1690
.L1694:
	cmp	w25, 8
	bne	.L1696
	mov	w0, 190
	b	.L1745
.L1696:
	mov	w0, 56
	b	.L1745
	.size	hynix_get_read_retry_default, .-hynix_get_read_retry_default
	.section	.text.flash_get_read_retry_tbl,"ax",@progbits
	.align	2
	.global	flash_get_read_retry_tbl
	.type	flash_get_read_retry_tbl, %function
flash_get_read_retry_tbl:
	adrp	x0, .LANCHOR32+19
	ldrb	w0, [x0, #:lo12:.LANCHOR32+19]
	sub	w1, w0, #1
	and	w1, w1, 255
	cmp	w1, 7
	bhi	.L1746
	b	hynix_get_read_retry_default
.L1746:
	ret
	.size	flash_get_read_retry_tbl, .-flash_get_read_retry_tbl
	.section	.text.nandc_xfer_done,"ax",@progbits
	.align	2
	.global	nandc_xfer_done
	.type	nandc_xfer_done, %function
nandc_xfer_done:
	stp	x29, x30, [sp, -80]!
	adrp	x0, .LANCHOR165
	adrp	x1, .LANCHOR27
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR7
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	stp	x21, x22, [sp, 32]
	strb	wzr, [x0, #:lo12:.LANCHOR165]
	cmp	w1, 9
	str	x23, [sp, 48]
	bne	.L1749
	ldr	x20, [x19, #:lo12:.LANCHOR7]
	mov	x21, x0
	ldr	w0, [x20, 16]
	str	w0, [x29, 64]
	ldr	w0, [x20, 48]
	tbnz	x0, 1, .L1750
	adrp	x22, .LC103
	adrp	x23, .LC104
	add	x22, x22, :lo12:.LC103
	add	x23, x23, :lo12:.LC104
	mov	w21, 0
.L1751:
	ldr	w0, [x29, 64]
	tbnz	x0, 20, .L1753
	ldr	x0, [x19, #:lo12:.LANCHOR7]
	add	w21, w21, 1
	tst	x21, 16777215
	ldr	w0, [x0, 16]
	str	w0, [x29, 64]
	bne	.L1751
	ldr	w2, [x29, 64]
	mov	w1, w21
	ldr	w3, [x20, 64]
	mov	x0, x22
	ubfx	x3, x3, 16, 6
	bl	printf
	ldr	x1, [x19, #:lo12:.LANCHOR7]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x23
	bl	rknand_print_hex
	b	.L1751
.L1752:
	ldr	w0, [x29, 64]
	add	w1, w1, 1
	ubfx	x0, x0, 22, 6
	cmp	w1, w0, lsl 12
	bne	.L1754
	ldr	w2, [x20, 64]
	adrp	x0, .LC102
	ldr	w3, [x29, 64]
	add	x0, x0, :lo12:.LC102
	ubfx	x2, x2, 16, 5
	ubfx	x3, x3, 22, 6
	bl	printf
	ldr	w0, [x29, 72]
	mov	w0, 1
	strb	w0, [x21, #:lo12:.LANCHOR165]
.L1753:
	adrp	x0, .LANCHOR52+32
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	str	wzr, [x0, #:lo12:.LANCHOR52+32]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 80
	ret
.L1750:
	mov	w1, 0
.L1754:
	ldr	w2, [x20, 64]
	ldr	w0, [x29, 64]
	ubfx	x2, x2, 16, 6
	ubfx	x0, x0, 22, 6
	cmp	w2, w0
	bge	.L1753
	ldr	w0, [x20]
	str	w0, [x29, 72]
	ldr	w0, [x29, 72]
	tbz	x0, 13, .L1752
	ldr	w0, [x29, 72]
	tbz	x0, 17, .L1752
	ldr	w1, [x29, 72]
	adrp	x0, .LC101
	add	x0, x0, :lo12:.LC101
	ubfx	x1, x1, 17, 1
.L1783:
	bl	printf
	b	.L1753
.L1749:
	ldr	x20, [x19, #:lo12:.LANCHOR7]
	mov	w21, 0
	ldr	w0, [x20, 8]
	str	w0, [x29, 64]
	ldr	w0, [x20, 16]
	tbnz	x0, 1, .L1759
	adrp	x22, .LC103
	adrp	x23, .LC104
	add	x22, x22, :lo12:.LC103
	add	x23, x23, :lo12:.LC104
.L1760:
	ldr	w0, [x29, 64]
	tbnz	x0, 20, .L1753
	ldr	x0, [x19, #:lo12:.LANCHOR7]
	add	w21, w21, 1
	tst	x21, 16777215
	ldr	w0, [x0, 8]
	str	w0, [x29, 64]
	bne	.L1760
	ldr	w2, [x29, 64]
	mov	w1, w21
	ldr	w3, [x20, 28]
	mov	x0, x22
	ubfx	x3, x3, 16, 5
	bl	printf
	ldr	x1, [x19, #:lo12:.LANCHOR7]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x23
	bl	rknand_print_hex
	b	.L1760
.L1759:
	adrp	x22, .LC102
	adrp	x23, .LC104
	add	x22, x22, :lo12:.LC102
	add	x23, x23, :lo12:.LC104
.L1761:
	ldr	w1, [x20, 28]
	ldr	w0, [x29, 64]
	ubfx	x1, x1, 16, 5
	ubfx	x0, x0, 22, 6
	cmp	w1, w0
	bge	.L1753
	ldr	x0, [x19, #:lo12:.LANCHOR7]
	ldr	w0, [x0]
	str	w0, [x29, 72]
	ldr	w0, [x29, 72]
	tbz	x0, 13, .L1762
	ldr	w0, [x29, 72]
	tbz	x0, 17, .L1762
	adrp	x0, .LC105
	ldr	w1, [x29, 72]
	add	x0, x0, :lo12:.LC105
	b	.L1783
.L1762:
	add	w21, w21, 1
	tst	x21, 16777215
	bne	.L1761
	ldr	w2, [x20, 28]
	mov	w1, w21
	ldr	w3, [x29, 64]
	mov	x0, x22
	ubfx	x2, x2, 16, 5
	ubfx	x3, x3, 22, 6
	bl	printf
	ldr	x1, [x19, #:lo12:.LANCHOR7]
	mov	w3, 64
	mov	w2, 4
	mov	x0, x23
	bl	rknand_print_hex
	b	.L1761
	.size	nandc_xfer_done, .-nandc_xfer_done
	.section	.text.nandc_xfer,"ax",@progbits
	.align	2
	.global	nandc_xfer
	.type	nandc_xfer, %function
nandc_xfer:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w2, 255
	mov	x20, x3
	stp	x21, x22, [sp, 32]
	mov	x3, x4
	and	w22, w1, 255
	mov	x2, x20
	mov	w1, w19
	mov	w0, w22
	mov	x21, x4
	bl	nandc_xfer_start
	mov	w0, w22
	bl	nandc_xfer_done
	cbnz	w22, .L1803
	adrp	x0, .LANCHOR27
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	cmp	w0, 9
	bne	.L1786
	adrp	x22, .LANCHOR7
	lsr	w19, w19, 2
	mov	w3, 1
	mov	w2, 0
	ldr	x5, [x22, #:lo12:.LANCHOR7]
	mov	w0, 0
.L1787:
	cmp	w2, w19
	bcc	.L1791
	ldr	w19, [x5]
	cmp	w3, 0
	mov	w1, 512
	csel	w0, w0, w1, eq
	mov	w1, 8192
	movk	w1, 0x2, lsl 16
	and	w1, w19, w1
	cmp	w1, 139264
	bne	.L1793
	mov	w1, w19
	adrp	x0, .LC106
	add	x0, x0, :lo12:.LC106
	bl	printf
	ldr	x0, [x22, #:lo12:.LANCHOR7]
	orr	w19, w19, 131072
	str	w19, [x0]
	mov	w0, -1
.L1793:
	tbz	x19, 13, .L1794
	adrp	x1, .LANCHOR165
	ldrb	w1, [x1, #:lo12:.LANCHOR165]
	cbz	w1, .L1794
	mov	w1, w19
	adrp	x0, .LC107
	add	x0, x0, :lo12:.LC107
	bl	printf
	ldr	x0, [x22, #:lo12:.LANCHOR7]
	mov	w1, 1
	str	w1, [x0, 16]
.L1822:
	mov	w0, -1
.L1785:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L1791:
	uxtw	x1, w2
	add	x1, x1, 84
	ldr	w1, [x5, x1, lsl 2]
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	ldr	w4, [x29, 56]
	ubfx	x4, x4, 26, 1
	and	w1, w4, w1, lsr 10
	and	w3, w3, w1
	ldr	w1, [x29, 56]
	tbnz	x1, 2, .L1805
	ldr	w1, [x29, 56]
	tbnz	x1, 18, .L1805
	ldr	w4, [x29, 56]
	ldr	w1, [x29, 56]
	ubfx	x4, x4, 3, 7
	ubfx	x1, x1, 19, 7
	cmp	w4, w1
	ldr	w1, [x29, 56]
	ble	.L1789
	ubfx	x1, x1, 3, 7
.L1790:
	cmp	w0, w1
	csel	w0, w0, w1, cs
.L1788:
	add	w2, w2, 1
	b	.L1787
.L1789:
	ubfx	x1, x1, 19, 7
	b	.L1790
.L1805:
	mov	w0, -1
	b	.L1788
.L1786:
	adrp	x0, .LANCHOR49
	lsr	w4, w19, 1
	mov	w3, 64
	mov	w1, 1
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	mov	w2, 0
	adrp	x6, .LANCHOR52
	cmp	w0, 25
	mov	w0, 128
	csel	w3, w3, w0, cc
	mov	w0, 0
.L1796:
	add	w5, w3, w0
	cmp	w2, w4
	bcc	.L1797
	adrp	x22, .LANCHOR7
	lsr	w19, w19, 2
	mov	w3, 0
	mov	w0, 0
	ldr	x4, [x22, #:lo12:.LANCHOR7]
.L1798:
	cmp	w3, w19
	bcc	.L1802
	str	wzr, [x4, 16]
	mov	w1, 8192
	movk	w1, 0x2, lsl 16
	ldr	w19, [x4]
	and	w1, w19, w1
	cmp	w1, 139264
	bne	.L1794
	mov	w1, w19
	adrp	x0, .LC108
	add	x0, x0, :lo12:.LC108
	bl	printf
	ldr	x0, [x22, #:lo12:.LANCHOR7]
	orr	w19, w19, 131072
	str	w19, [x0]
	b	.L1822
.L1797:
	ldr	x7, [x6, #:lo12:.LANCHOR52]
	and	x0, x0, 4294967292
	ldr	w0, [x7, x0]
	lsl	w7, w2, 2
	add	w2, w2, 1
	strb	w0, [x21, x7]
	lsr	w7, w0, 8
	strb	w7, [x21, w1, uxtw]
	add	w7, w1, 1
	lsr	w8, w0, 16
	lsr	w0, w0, 24
	strb	w8, [x21, x7]
	add	w7, w1, 2
	add	w1, w1, 4
	strb	w0, [x21, x7]
	mov	w0, w5
	b	.L1796
.L1802:
	uxtw	x1, w3
	add	x1, x1, 8
	ldr	w1, [x4, x1, lsl 2]
	str	w1, [x29, 56]
	ldr	w1, [x29, 56]
	tbnz	x1, 2, .L1808
	ldr	w1, [x29, 56]
	tbnz	x1, 15, .L1808
	ldr	w2, [x29, 56]
	ubfx	x6, x2, 3, 5
	ldr	w2, [x29, 56]
	ldr	w1, [x29, 56]
	ubfx	x2, x2, 27, 1
	ubfx	x5, x1, 16, 5
	ldr	w1, [x29, 56]
	orr	w2, w6, w2, lsl 5
	ubfx	x1, x1, 29, 1
	orr	w1, w5, w1, lsl 5
	cmp	w2, w1
	ldr	w1, [x29, 56]
	bls	.L1800
	ubfx	x2, x1, 3, 5
	ldr	w1, [x29, 56]
	ubfx	x1, x1, 27, 1
.L1821:
	orr	w1, w2, w1, lsl 5
	cmp	w0, w1
	csel	w0, w0, w1, cs
.L1799:
	add	w3, w3, 1
	b	.L1798
.L1800:
	ubfx	x2, x1, 16, 5
	ldr	w1, [x29, 56]
	ubfx	x1, x1, 29, 1
	b	.L1821
.L1808:
	mov	w0, -1
	b	.L1799
.L1794:
	cmn	w0, #1
	beq	.L1785
	ldr	w1, [x21]
	cmn	w1, #1
	bne	.L1785
	ldr	w1, [x21, 4]
	cmn	w1, #1
	bne	.L1785
	ldr	w1, [x20]
	cmn	w1, #1
	mov	w1, 512
	csel	w0, w0, w1, ne
	b	.L1785
.L1803:
	mov	w0, 0
	b	.L1785
	.size	nandc_xfer, .-nandc_xfer
	.section	.text.flash_read_page,"ax",@progbits
	.align	2
	.global	flash_read_page
	.type	flash_read_page, %function
flash_read_page:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR7
	stp	x19, x20, [sp, 16]
	mov	w19, 24
	stp	x23, x24, [sp, 48]
	ldr	x20, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR31
	stp	x25, x26, [sp, 64]
	mov	x24, x2
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	x25, x3
	mov	w23, w4
	ubfx	x22, x1, 24, 2
	sub	w0, w19, w0
	mov	w19, 1
	adrp	x26, .LANCHOR21
	lsl	w19, w19, w0
	sub	w19, w19, #1
	and	w19, w19, w1
	bl	nandc_wait_flash_ready
	mov	w0, w21
	bl	nandc_cs
	cbnz	w22, .L1824
	mov	w0, w21
	bl	zftl_flash_enter_slc_mode
.L1825:
	ldr	x1, [x26, #:lo12:.LANCHOR21]
	ldrb	w0, [x1, 7]
	cmp	w0, 1
	bne	.L1827
	ldrb	w0, [x1, 12]
	cmp	w0, 2
	bne	.L1827
	sxtw	x0, w21
	mov	w2, 38
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w2, [x0, 8]
.L1827:
	ubfiz	x0, x21, 8, 8
	add	x20, x20, x0
	and	w0, w19, 255
	str	wzr, [x20, 2056]
	str	wzr, [x20, 2052]
	str	wzr, [x20, 2052]
	str	w0, [x20, 2052]
	lsr	w0, w19, 8
	str	w0, [x20, 2052]
	lsr	w0, w19, 16
	str	w0, [x20, 2052]
	adrp	x0, .LANCHOR30
	ldrb	w0, [x0, #:lo12:.LANCHOR30]
	cbz	w0, .L1828
	lsr	w0, w19, 24
	str	w0, [x20, 2052]
.L1828:
	mov	w0, 48
	str	w0, [x20, 2056]
	ldrb	w0, [x1, 12]
	cmp	w0, 3
	bne	.L1829
	cbz	w22, .L1829
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L1829
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L1829
	add	w19, w19, w19, lsl 1
	sub	w0, w19, #1
	add	w0, w0, w22
.L1838:
	bl	nandc_set_seed
	bl	nandc_wait_flash_ready
	mov	w0, 5
	str	w0, [x20, 2056]
	str	wzr, [x20, 2052]
	mov	w0, 224
	str	wzr, [x20, 2052]
	mov	w2, w23
	str	w0, [x20, 2056]
	mov	x4, x25
	mov	x3, x24
	mov	w1, 0
	mov	w0, w21
	bl	nandc_xfer
	mov	w2, w0
	bl	nandc_de_cs.constprop.31
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L1824:
	ldr	x0, [x26, #:lo12:.LANCHOR21]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L1826
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L1826
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L1826
	sxtw	x0, w21
	add	x0, x0, 8
	add	x0, x20, x0, lsl 8
	str	w22, [x0, 8]
	b	.L1825
.L1826:
	mov	w0, w21
	bl	zftl_flash_exit_slc_mode
	b	.L1825
.L1829:
	mov	w0, w19
	b	.L1838
	.size	flash_read_page, .-flash_read_page
	.section	.text.micron_read_retrial,"ax",@progbits
	.align	2
	.global	micron_read_retrial
	.type	micron_read_retrial, %function
micron_read_retrial:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	adrp	x0, .LANCHOR49
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	mov	w24, w1
	stp	x21, x22, [sp, 32]
	mov	x25, x2
	ldrb	w21, [x0, #:lo12:.LANCHOR49]
	mov	x26, x3
	stp	x27, x28, [sp, 80]
	mov	w23, 0
	str	w4, [x29, 124]
	bl	nandc_wait_flash_ready
	adrp	x0, .LANCHOR7
	add	w21, w21, w21, lsl 1
	asr	w21, w21, 2
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR167
	add	x0, x0, :lo12:.LANCHOR167
	str	x0, [x29, 112]
	ubfiz	x0, x20, 8, 8
	add	x19, x19, x0
.L1840:
	mov	w0, w20
	bl	zftl_flash_enter_slc_mode
	mov	w0, w20
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR19
	mov	w22, 0
	add	x0, x0, :lo12:.LANCHOR19
	mov	w28, -1
	str	x0, [x29, 104]
.L1841:
	ldr	x0, [x29, 112]
	ldrb	w0, [x0]
	cmp	w22, w0
	bcc	.L1846
.L1845:
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 137
	str	w0, [x19, 2052]
	mov	x0, 1
	bl	udelay
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	cmp	w28, w21
	str	wzr, [x19, 2048]
	str	wzr, [x19, 2048]
	bcc	.L1847
	cmn	w28, #1
	mov	w0, 256
	csel	w28, w28, w0, eq
.L1847:
	cmn	w28, #1
	cset	w27, eq
	cmp	w28, 256
	cset	w0, eq
	orr	w0, w27, w0
	cbz	w0, .L1848
	mov	w4, w28
	mov	w3, w22
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC110
	add	x0, x0, :lo12:.LC110
	bl	printf
	eor	w0, w23, 1
	tst	w27, w0
	beq	.L1849
	mov	w1, 3
	mov	w0, w20
	mov	w23, 1
	bl	mt_auto_read_calibration_config
	b	.L1840
.L1846:
	mov	w0, 239
	str	w0, [x19, 2056]
	mov	w0, 137
	str	w0, [x19, 2052]
	add	w27, w22, 1
	mov	x0, 1
	bl	udelay
	str	w27, [x19, 2048]
	str	wzr, [x19, 2048]
	mov	x3, x26
	ldr	w4, [x29, 124]
	mov	x2, x25
	str	wzr, [x19, 2048]
	mov	w1, w24
	str	wzr, [x19, 2048]
	mov	w0, w20
	bl	flash_read_page
	mov	w6, w0
	ldr	x0, [x29, 104]
	ldr	w0, [x0]
	tbz	x0, 12, .L1842
	mov	w4, w6
	str	w6, [x29, 120]
	mov	w3, w28
	mov	w2, w24
	mov	w1, w22
	adrp	x0, .LC109
	add	x0, x0, :lo12:.LC109
	bl	printf
	ldr	w6, [x29, 120]
.L1842:
	cmn	w6, #1
	beq	.L1843
	adrp	x0, .LANCHOR164
	cmn	w28, #1
	csel	w28, w28, w6, ne
	cmp	w6, w21
	ldr	x25, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x26, [x0, #:lo12:.LANCHOR166]
	bcc	.L1852
.L1843:
	mov	w22, w27
	b	.L1841
.L1852:
	mov	w28, w6
	b	.L1845
.L1849:
	cbz	w23, .L1850
	mov	w0, w20
	mov	w1, 0
	bl	mt_auto_read_calibration_config
	cmn	w28, #1
	mov	w0, 256
	csel	w28, w28, w0, eq
.L1850:
	bl	nandc_wait_flash_ready
	mov	w0, w28
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L1848:
	cbz	w23, .L1850
	mov	w1, 0
	mov	w0, w20
	mov	w28, 256
	bl	mt_auto_read_calibration_config
	b	.L1850
	.size	micron_read_retrial, .-micron_read_retrial
	.section	.text.toshiba_3d_read_retrial,"ax",@progbits
	.align	2
	.global	toshiba_3d_read_retrial
	.type	toshiba_3d_read_retrial, %function
toshiba_3d_read_retrial:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR16
	stp	x23, x24, [sp, 48]
	mov	w24, w1
	stp	x25, x26, [sp, 64]
	and	w23, w0, 255
	stp	x27, x28, [sp, 80]
	mov	x26, x2
	stp	x19, x20, [sp, 16]
	mov	x27, x3
	mov	w28, w4
	bl	nandc_wait_flash_ready
	adrp	x0, .LANCHOR7
	mov	w1, 46
	mov	w2, 56
	ubfx	x19, x24, 24, 2
	ldr	x25, [x0, #:lo12:.LANCHOR7]
	and	x0, x23, 255
	add	x21, x0, 8
	str	x0, [x29, 128]
	ldrb	w0, [x22, #:lo12:.LANCHOR16]
	add	x21, x25, x21, lsl 8
	cmp	w0, 36
	mov	w0, 26
	csel	w1, w2, w1, ne
	str	w1, [x29, 120]
	mov	w1, 10
	csel	w0, w1, w0, ne
	str	w0, [x29, 136]
	cbnz	w19, .L1870
	add	x0, x22, :lo12:.LANCHOR16
	str	x0, [x29, 120]
	sxtw	x0, w23
	mov	w19, -1
	add	x0, x0, 8
	mov	w20, 1
	add	x0, x25, x0, lsl 8
	str	x0, [x29, 112]
.L1877:
	ldr	x0, [x29, 120]
	ldrb	w0, [x0]
	cmp	w0, 36
	bne	.L1871
	mov	w1, w20
	mov	x0, x21
	mov	w2, 0
	bl	toshiba_tlc_set_rr_para
	ldr	x1, [x29, 112]
	mov	w0, 93
	str	w0, [x1, 8]
.L1872:
	mov	w4, w28
	mov	x3, x27
	mov	x2, x26
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 4, .L1873
	mov	w3, w4
	str	w4, [x29, 108]
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC111
	add	x0, x0, :lo12:.LC111
	bl	printf
	ldr	w4, [x29, 108]
.L1873:
	cmn	w4, #1
	beq	.L1874
	adrp	x0, .LANCHOR164
	cmn	w19, #1
	csel	w19, w19, w4, ne
	ldr	x26, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x27, [x0, #:lo12:.LANCHOR166]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1892
.L1874:
	ldr	w0, [x29, 136]
	add	w20, w20, 1
	cmp	w0, w20
	bne	.L1877
.L1876:
	ldrb	w0, [x22, #:lo12:.LANCHOR16]
	cmp	w0, 36
	bne	.L1878
	mov	w2, 0
.L1915:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_tlc_set_rr_para
	b	.L1879
.L1871:
	mov	w1, w20
	mov	x0, x21
	bl	toshiba_3d_set_slc_rr_para
	b	.L1872
.L1892:
	mov	w19, w4
	b	.L1876
.L1878:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_3d_set_slc_rr_para
.L1879:
	ldrb	w0, [x22, #:lo12:.LANCHOR16]
	cmp	w0, 36
	bne	.L1888
	ldr	x0, [x29, 128]
	add	x25, x25, x0, lsl 8
	mov	w0, 85
	str	w0, [x25, 2056]
	mov	w0, 255
	str	wzr, [x25, 2052]
	str	wzr, [x25, 2048]
	str	w0, [x25, 2056]
.L1888:
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L1889
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L1889:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L1890
	adrp	x0, .LC113
	mov	w4, w19
	mov	w3, w20
	mov	w2, w24
	mov	w1, w23
	add	x0, x0, :lo12:.LC113
	bl	printf
.L1890:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L1870:
	add	x0, x22, :lo12:.LANCHOR16
	str	x0, [x29, 112]
	sxtw	x0, w23
	mov	w19, -1
	add	x0, x0, 8
	mov	w20, 1
	add	x0, x25, x0, lsl 8
	str	x0, [x29, 136]
.L1886:
	ldr	x0, [x29, 112]
	ldrb	w0, [x0]
	cmp	w0, 36
	bne	.L1880
	mov	x0, x21
	mov	w2, 1
	mov	w1, w20
	bl	toshiba_tlc_set_rr_para
	mov	w0, 93
.L1914:
	ldr	x1, [x29, 136]
	mov	w4, w28
	mov	x3, x27
	mov	x2, x26
	str	w0, [x1, 8]
	mov	w1, w24
	mov	w0, w23
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 4, .L1882
	mov	w3, w4
	str	w4, [x29, 108]
	mov	w2, w24
	mov	w1, w20
	adrp	x0, .LC112
	add	x0, x0, :lo12:.LC112
	bl	printf
	ldr	w4, [x29, 108]
.L1882:
	cmn	w4, #1
	beq	.L1883
	adrp	x0, .LANCHOR164
	cmn	w19, #1
	csel	w19, w19, w4, ne
	ldr	x26, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x27, [x0, #:lo12:.LANCHOR166]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1893
.L1883:
	ldr	w0, [x29, 120]
	add	w20, w20, 1
	cmp	w0, w20
	bne	.L1886
.L1885:
	ldrb	w0, [x22, #:lo12:.LANCHOR16]
	cmp	w0, 36
	bne	.L1887
	mov	w2, 1
	b	.L1915
.L1880:
	mov	x0, x21
	mov	w1, w20
	bl	toshiba_3d_set_tlc_rr_para
	mov	w0, 38
	b	.L1914
.L1893:
	mov	w19, w4
	b	.L1885
.L1887:
	mov	w1, 0
	mov	x0, x21
	bl	toshiba_3d_set_tlc_rr_para
	b	.L1879
	.size	toshiba_3d_read_retrial, .-toshiba_3d_read_retrial
	.section	.text.toshiba_read_retrial,"ax",@progbits
	.align	2
	.global	toshiba_read_retrial
	.type	toshiba_read_retrial, %function
toshiba_read_retrial:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	mov	w25, w1
	mov	x26, x2
	str	w4, [x29, 116]
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x27, x28, [sp, 80]
	mov	x27, x3
	stp	x23, x24, [sp, 48]
	bl	nandc_wait_flash_ready
	mov	w0, w19
	bl	zftl_flash_enter_slc_mode
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR7
	adrp	x1, .LANCHOR16
	str	x1, [x29, 120]
	ldr	x22, [x0, #:lo12:.LANCHOR7]
	and	x0, x19, 255
	add	x21, x0, 8
	str	x0, [x29, 104]
	ldrb	w0, [x1, #:lo12:.LANCHOR16]
	add	x21, x22, x21, lsl 8
	sub	w0, w0, #67
	and	w0, w0, 255
	cmp	w0, 1
	bls	.L1934
	adrp	x0, .LANCHOR26
	ldrb	w0, [x0, #:lo12:.LANCHOR26]
	cbz	w0, .L1935
	mov	w23, 1
	mov	w0, 1
	bl	nandc_set_if_mode
.L1918:
	and	x0, x19, 255
	mov	w1, 92
	add	x0, x22, x0, lsl 8
	str	w1, [x0, 2056]
	mov	w1, 197
	str	w1, [x0, 2056]
.L1917:
	sxtw	x0, w19
	mov	w20, 1
	add	x0, x0, 8
	mov	w24, -1
	add	x0, x22, x0, lsl 8
	str	x0, [x29, 96]
.L1919:
	adrp	x0, .LANCHOR167
	ldrb	w0, [x0, #:lo12:.LANCHOR167]
	add	w0, w0, 1
	cmp	w20, w0
	bcc	.L1928
	mov	w28, w24
.L1927:
	ldr	x0, [x29, 120]
	mov	w1, 0
	ldrb	w0, [x0, #:lo12:.LANCHOR16]
	sub	w0, w0, #67
	and	w0, w0, 255
	cmp	w0, 1
	mov	x0, x21
	bhi	.L1929
	bl	sandisk_set_rr_para
.L1930:
	sxtw	x19, w19
	mov	w0, 255
	add	x19, x19, 8
	add	x22, x22, x19, lsl 8
	str	w0, [x22, 8]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w28, w0, lsr 2
	bcc	.L1931
	cmn	w28, #1
	mov	w0, 256
	csel	w28, w28, w0, eq
.L1931:
	cmp	w28, 256
	ccmn	w28, #1, 4, ne
	bne	.L1932
	adrp	x0, .LC113
	mov	w4, w28
	mov	w3, w20
	mov	w2, w25
	mov	w1, w20
	add	x0, x0, :lo12:.LC113
	bl	printf
.L1932:
	bl	nandc_wait_flash_ready
	cbz	w23, .L1916
	mov	w0, 4
	bl	nandc_set_if_mode
.L1916:
	mov	w0, w28
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L1935:
	mov	w23, 0
	b	.L1918
.L1934:
	mov	w23, 0
	b	.L1917
.L1928:
	ldr	x0, [x29, 120]
	mov	w1, w20
	ldrb	w0, [x0, #:lo12:.LANCHOR16]
	sub	w0, w0, #67
	and	w0, w0, 255
	cmp	w0, 1
	mov	x0, x21
	bhi	.L1920
	bl	sandisk_set_rr_para
.L1921:
	ldr	x0, [x29, 120]
	ldrb	w0, [x0, #:lo12:.LANCHOR16]
	cmp	w0, 34
	bne	.L1922
	adrp	x0, .LANCHOR167
	ldrb	w0, [x0, #:lo12:.LANCHOR167]
	sub	w0, w0, #3
	cmp	w20, w0
	bne	.L1922
	ldr	x1, [x29, 96]
	mov	w0, 179
	str	w0, [x1, 8]
.L1922:
	ldr	x0, [x29, 104]
	mov	w1, 38
	ldr	w4, [x29, 116]
	mov	x3, x27
	mov	x2, x26
	add	x0, x22, x0, lsl 8
	str	w1, [x0, 2056]
	mov	w1, 93
	str	w1, [x0, 2056]
	mov	w1, w25
	mov	w0, w19
	bl	flash_read_page
	mov	w28, w0
	cmn	w0, #1
	beq	.L1925
	cmn	w24, #1
	csel	w24, w24, w0, ne
	adrp	x0, .LANCHOR164
	ldr	x26, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x27, [x0, #:lo12:.LANCHOR166]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w28, w0, lsr 2
	bcc	.L1927
.L1925:
	add	w20, w20, 1
	b	.L1919
.L1920:
	bl	toshiba_set_rr_para
	b	.L1921
.L1929:
	bl	toshiba_set_rr_para
	b	.L1930
	.size	toshiba_read_retrial, .-toshiba_read_retrial
	.section	.text.ymtc_3d_read_retrial,"ax",@progbits
	.align	2
	.global	ymtc_3d_read_retrial
	.type	ymtc_3d_read_retrial, %function
ymtc_3d_read_retrial:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, -1
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	stp	x23, x24, [sp, 48]
	mov	w23, w1
	stp	x25, x26, [sp, 64]
	mov	x24, x2
	stp	x27, x28, [sp, 80]
	mov	x25, x3
	mov	w26, w4
	bl	nandc_wait_flash_ready
	mov	w0, w22
	bl	zftl_flash_enter_slc_mode
	mov	w0, w22
	bl	zftl_flash_exit_slc_mode
	adrp	x1, .LANCHOR7
	ubfiz	x21, x22, 8, 8
	add	x0, x21, 2048
	adrp	x27, .LANCHOR49
	ldr	x21, [x1, #:lo12:.LANCHOR7]
	mov	w20, 1
	adrp	x28, .LANCHOR164
	adrp	x5, .LANCHOR166
	add	x21, x21, x0
	add	x27, x27, :lo12:.LANCHOR49
	tst	x23, 50331648
	bne	.L1958
.L1953:
	str	x5, [x29, 104]
	mov	w1, w20
	mov	x0, x21
	bl	ymtc_3d_set_slc_rr_para
	mov	w4, w26
	mov	x3, x25
	mov	x2, x24
	mov	w1, w23
	mov	w0, w22
	bl	flash_read_page
	ldr	x5, [x29, 104]
	cmn	w0, #1
	beq	.L1950
	ldrb	w1, [x27]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x24, [x28, #:lo12:.LANCHOR164]
	ldr	x25, [x5, #:lo12:.LANCHOR166]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L1961
.L1950:
	add	w20, w20, 1
	cmp	w20, 10
	bne	.L1953
.L1952:
	mov	w1, 0
	mov	x0, x21
	bl	ymtc_3d_set_slc_rr_para
.L1954:
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L1959
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L1959:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L1960
	adrp	x0, .LC114
	mov	w4, w19
	mov	w3, w20
	mov	w2, w23
	mov	w1, w20
	add	x0, x0, :lo12:.LC114
	bl	printf
.L1960:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L1961:
	mov	w19, w0
	b	.L1952
.L1958:
	str	x5, [x29, 104]
	mov	w1, w20
	mov	x0, x21
	bl	ymtc_3d_set_tlc_rr_para
	mov	w4, w26
	mov	x3, x25
	mov	x2, x24
	mov	w1, w23
	mov	w0, w22
	bl	flash_read_page
	ldr	x5, [x29, 104]
	cmn	w0, #1
	beq	.L1955
	ldrb	w1, [x27]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x24, [x28, #:lo12:.LANCHOR164]
	ldr	x25, [x5, #:lo12:.LANCHOR166]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L1962
.L1955:
	add	w20, w20, 1
	cmp	w20, 51
	bne	.L1958
.L1957:
	mov	w1, 0
	mov	x0, x21
	bl	ymtc_3d_set_tlc_rr_para
	b	.L1954
.L1962:
	mov	w19, w0
	b	.L1957
	.size	ymtc_3d_read_retrial, .-ymtc_3d_read_retrial
	.section	.text.samsung_read_retrial,"ax",@progbits
	.align	2
	.global	samsung_read_retrial
	.type	samsung_read_retrial, %function
samsung_read_retrial:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	mov	x22, x2
	stp	x19, x20, [sp, 16]
	str	w4, [x29, 108]
	mov	w20, w1
	stp	x23, x24, [sp, 48]
	mov	x23, x3
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	bl	nandc_wait_flash_ready
	mov	w0, w21
	bl	zftl_flash_enter_slc_mode
	mov	w0, w21
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR7
	tst	x20, 50331648
	and	x5, x21, 255
	ldr	x0, [x0, #:lo12:.LANCHOR7]
	bne	.L1978
	adrp	x24, .LANCHOR168
	adrp	x27, .LC115
	add	x28, x0, x5, lsl 8
	add	x24, x24, :lo12:.LANCHOR168
	add	x27, x27, :lo12:.LC115
	mov	x26, 0
	mov	w25, -1
.L1983:
	mov	w0, 239
	str	w0, [x28, 2056]
	mov	w0, 141
	str	w0, [x28, 2052]
	add	x0, x24, x26
	add	w19, w26, 1
	ldrsb	w0, [x0, 1]
	str	w0, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	bl	nandc_wait_flash_ready
	ldr	w4, [x29, 108]
	mov	x3, x23
	mov	x2, x22
	mov	w1, w20
	mov	w0, w21
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 4, .L1979
	mov	w3, w4
	str	w4, [x29, 104]
	mov	w2, w20
	mov	w1, w19
	mov	x0, x27
	bl	printf
	ldr	w4, [x29, 104]
.L1979:
	cmn	w4, #1
	beq	.L1980
	adrp	x0, .LANCHOR164
	cmn	w25, #1
	csel	w25, w25, w4, ne
	ldr	x22, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x23, [x0, #:lo12:.LANCHOR166]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1992
.L1980:
	add	x26, x26, 1
	cmp	x26, 25
	bne	.L1983
	mov	w19, 26
.L1982:
	mov	w0, 239
	str	w0, [x28, 2056]
	mov	w0, 141
	str	w0, [x28, 2052]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
	str	wzr, [x28, 2048]
.L2014:
	bl	nandc_wait_flash_ready
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w25, w0, lsr 2
	bcc	.L1990
	cmn	w25, #1
	mov	w0, 256
	csel	w25, w25, w0, eq
.L1990:
	cmp	w25, 256
	ccmn	w25, #1, 4, ne
	bne	.L1991
	adrp	x0, .LC117
	mov	w4, w25
	mov	w3, w19
	mov	w2, w20
	mov	w1, w19
	add	x0, x0, :lo12:.LC117
	bl	printf
.L1991:
	bl	nandc_wait_flash_ready
	mov	w0, w25
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L1992:
	mov	w25, w4
	b	.L1982
.L1978:
	adrp	x7, .LANCHOR169
	add	x7, x7, :lo12:.LANCHOR169
	adrp	x24, .LC116
	add	x28, x7, 4
	add	x27, x0, x5, lsl 8
	add	x24, x24, :lo12:.LC116
	mov	w25, -1
	mov	w19, 1
	mov	w26, 137
.L1989:
	mov	w0, 239
	str	w0, [x27, 2056]
	str	w26, [x27, 2052]
	ldrb	w0, [x28]
	str	w0, [x27, 2048]
	ldrb	w0, [x28, 1]
	str	w0, [x27, 2048]
	ldrb	w0, [x28, 2]
	str	w0, [x27, 2048]
	ldrb	w0, [x28, 3]
	str	w0, [x27, 2048]
	bl	nandc_wait_flash_ready
	ldr	w4, [x29, 108]
	mov	x3, x23
	mov	x2, x22
	mov	w1, w20
	mov	w0, w21
	bl	flash_read_page
	mov	w4, w0
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 4, .L1985
	mov	w3, w4
	str	w4, [x29, 104]
	mov	w2, w20
	mov	w1, w19
	mov	x0, x24
	bl	printf
	ldr	w4, [x29, 104]
.L1985:
	cmn	w4, #1
	beq	.L1986
	adrp	x0, .LANCHOR164
	cmn	w25, #1
	csel	w25, w25, w4, ne
	ldr	x22, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x23, [x0, #:lo12:.LANCHOR166]
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	add	w0, w0, w0, lsl 1
	cmp	w4, w0, lsr 2
	bcc	.L1993
.L1986:
	add	w19, w19, 1
	add	x28, x28, 4
	cmp	w19, 26
	bne	.L1989
.L1988:
	mov	w0, 239
	str	w0, [x27, 2056]
	mov	w0, 137
	str	w0, [x27, 2052]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	str	wzr, [x27, 2048]
	b	.L2014
.L1993:
	mov	w25, w4
	b	.L1988
	.size	samsung_read_retrial, .-samsung_read_retrial
	.section	.text.hynix_read_retrial,"ax",@progbits
	.align	2
	.global	hynix_read_retrial
	.type	hynix_read_retrial, %function
hynix_read_retrial:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	and	x23, x0, 255
	adrp	x0, .LANCHOR6
	stp	x27, x28, [sp, 80]
	stp	x21, x22, [sp, 32]
	mov	w27, w4
	ldr	x28, [x0, #:lo12:.LANCHOR6]
	mov	w22, w1
	stp	x25, x26, [sp, 64]
	mov	x25, x2
	add	x28, x28, 112
	stp	x19, x20, [sp, 16]
	add	x0, x28, x23
	mov	x26, x3
	mov	x21, x23
	mov	w19, -1
	ldrb	w24, [x28, 2]
	ldrb	w20, [x0, 8]
	bl	nandc_wait_flash_ready
	mov	w0, w23
	bl	zftl_flash_enter_slc_mode
	mov	w0, w23
	bl	zftl_flash_exit_slc_mode
	adrp	x6, .LANCHOR49
	add	x6, x6, :lo12:.LANCHOR49
	mov	w5, 0
	adrp	x7, .LANCHOR164
	adrp	x8, .LANCHOR166
.L2016:
	cmp	w5, w24
	bcc	.L2021
.L2020:
	adrp	x0, .LANCHOR49
	add	x23, x28, x23
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	strb	w20, [x23, 8]
	add	w0, w0, w0, lsl 1
	cmp	w19, w0, lsr 2
	bcc	.L2022
	cmn	w19, #1
	mov	w0, 256
	csel	w19, w19, w0, eq
.L2022:
	cmp	w19, 256
	ccmn	w19, #1, 4, ne
	bne	.L2023
	adrp	x0, .LC118
	mov	w4, w19
	mov	w3, w5
	mov	w2, w22
	mov	w1, w5
	add	x0, x0, :lo12:.LC118
	bl	printf
.L2023:
	bl	nandc_wait_flash_ready
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2021:
	add	w20, w20, 1
	stp	x6, x8, [x29, 96]
	and	w20, w20, 255
	str	x7, [x29, 112]
	cmp	w24, w20
	str	w5, [x29, 124]
	csel	w20, w20, wzr, hi
	mov	w0, w21
	mov	w1, w20
	bl	hynix_set_rr_para
	mov	w4, w27
	mov	x3, x26
	mov	x2, x25
	mov	w1, w22
	mov	w0, w21
	bl	flash_read_page
	ldr	w5, [x29, 124]
	cmn	w0, #1
	ldp	x6, x8, [x29, 96]
	ldr	x7, [x29, 112]
	beq	.L2018
	ldrb	w1, [x6]
	cmn	w19, #1
	csel	w19, w19, w0, ne
	ldr	x25, [x7, #:lo12:.LANCHOR164]
	ldr	x26, [x8, #:lo12:.LANCHOR166]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	bcc	.L2024
.L2018:
	add	w5, w5, 1
	b	.L2016
.L2024:
	mov	w19, w0
	b	.L2020
	.size	hynix_read_retrial, .-hynix_read_retrial
	.section	.text.flash_ddr_tuning_read,"ax",@progbits
	.align	2
	.global	flash_ddr_tuning_read
	.type	flash_ddr_tuning_read, %function
flash_ddr_tuning_read:
	stp	x29, x30, [sp, -144]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w22, w1
	stp	x23, x24, [sp, 48]
	mov	x23, x2
	stp	x25, x26, [sp, 64]
	mov	x24, x3
	stp	x27, x28, [sp, 80]
	adrp	x25, .LANCHOR49
	str	w4, [x29, 136]
	bl	nandc_get_ddr_para
	add	x25, x25, :lo12:.LANCHOR49
	str	w0, [x29, 132]
	adrp	x0, .LANCHOR19
	add	x0, x0, :lo12:.LANCHOR19
	mov	w28, 0
	str	x0, [x29, 120]
	mov	w26, 0
	adrp	x0, .LC119
	mov	w27, 0
	add	x0, x0, :lo12:.LC119
	mov	w19, 1024
	mov	w21, -1
	mov	w7, 6
	str	wzr, [x29, 140]
	str	x0, [x29, 112]
.L2040:
	mov	w0, w7
	str	w7, [x29, 128]
	bl	nandc_set_ddr_para
	ldr	w4, [x29, 136]
	mov	x3, x24
	mov	x2, x23
	mov	w1, w22
	mov	w0, w20
	bl	flash_read_page
	mov	w4, w0
	ldr	x0, [x29, 120]
	ldr	w7, [x29, 128]
	ldr	w0, [x0]
	tbz	x0, 4, .L2035
	ldr	x0, [x29, 112]
	mov	w3, w4
	mov	w1, w7
	str	w4, [x29, 108]
	str	w7, [x29, 128]
	mov	w2, w22
	bl	printf
	ldr	w4, [x29, 108]
	ldr	w7, [x29, 128]
.L2035:
	add	w0, w19, 1
	cmp	w4, w0
	bhi	.L2036
	adrp	x0, .LANCHOR164
	ldr	x23, [x0, #:lo12:.LANCHOR164]
	adrp	x0, .LANCHOR166
	ldr	x24, [x0, #:lo12:.LANCHOR166]
	ldrb	w0, [x25]
	cmp	w4, w0, lsr 2
	bcs	.L2046
	add	w27, w27, 1
	cmp	w27, 7
	bls	.L2046
	sub	w28, w7, w27
	mov	w19, w4
	mov	w21, 0
.L2038:
	ldr	w0, [x29, 140]
	cmp	w27, w26
	csel	w28, w28, w0, cs
.L2039:
	cbz	w28, .L2041
	adrp	x0, .LANCHOR49
	mov	w1, 3
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	udiv	w0, w0, w1
	cmp	w0, w19
	bls	.L2041
	mov	w1, w28
	adrp	x0, .LC120
	add	x0, x0, :lo12:.LC120
	bl	printf
	mov	w0, w28
.L2060:
	bl	nandc_set_ddr_para
	cbz	w21, .L2034
	adrp	x25, .LANCHOR48
	ldrb	w0, [x25, #:lo12:.LANCHOR48]
	tbz	x0, 0, .L2034
	mov	w2, w22
	mov	w1, w20
	adrp	x0, .LC121
	add	x0, x0, :lo12:.LC121
	bl	printf
	mov	w0, w20
	bl	flash_reset
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
	bl	nandc_set_if_mode
	adrp	x0, .LANCHOR33
	add	x0, x0, :lo12:.LANCHOR33
	mov	w1, 2
	strb	w1, [x0, w20, sxtw]
	mov	w0, w20
	bl	zftl_flash_enter_slc_mode
	ldr	w4, [x29, 136]
	mov	x3, x24
	mov	x2, x23
	mov	w1, w22
	mov	w0, w20
	bl	flash_read_page
	mov	w19, w0
	mov	w3, w0
	mov	w2, w22
	mov	w1, w20
	adrp	x0, .LC122
	add	x0, x0, :lo12:.LC122
	bl	printf
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	cmp	w19, w0
	bhi	.L2048
	adrp	x1, .LANCHOR170
	ldr	w0, [x1, #:lo12:.LANCHOR170]
	add	w0, w0, 1
	str	w0, [x1, #:lo12:.LANCHOR170]
	cmp	w0, 100
	bls	.L2044
	adrp	x0, .LANCHOR26
	strb	wzr, [x0, #:lo12:.LANCHOR26]
.L2034:
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 144
	ret
.L2036:
	cmp	w27, w26
	bls	.L2047
	sub	w0, w28, w27
	str	w0, [x29, 140]
	cmp	w27, 7
	bhi	.L2039
	mov	w26, w27
.L2047:
	mov	w27, 0
	b	.L2037
.L2046:
	mov	w28, w7
	mov	w19, w4
	mov	w21, 0
.L2037:
	add	w7, w7, 2
	cmp	w7, 50
	bne	.L2040
	b	.L2038
.L2041:
	ldrb	w0, [x29, 132]
	b	.L2060
.L2048:
	mov	w19, w21
.L2044:
	ldrb	w0, [x25, #:lo12:.LANCHOR48]
	bl	flash_set_interface_mode
	ldrb	w0, [x25, #:lo12:.LANCHOR48]
	bl	nandc_set_if_mode
	b	.L2034
	.size	flash_ddr_tuning_read, .-flash_ddr_tuning_read
	.section	.text.flash_read_page_en,"ax",@progbits
	.align	2
	.global	flash_read_page_en
	.type	flash_read_page_en, %function
flash_read_page_en:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	adrp	x0, .LANCHOR23
	stp	x23, x24, [sp, 48]
	stp	x21, x22, [sp, 32]
	mov	w19, w1
	str	x25, [sp, 64]
	mov	x22, x2
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	mov	x23, x3
	mov	w24, w4
	mov	x25, x0
	cmp	w1, w20
	bhi	.L2062
	adrp	x1, .LANCHOR171
	adrp	x0, .LC0
	mov	w2, 431
	add	x1, x1, :lo12:.LANCHOR171
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2062:
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w4, [x25, #:lo12:.LANCHOR23]
	ldrb	w21, [x0, w20, sxtw]
	cmp	w20, w4
	bcc	.L2063
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbnz	x0, 6, .L2064
.L2088:
	mov	w0, -1
.L2061:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2064:
	mov	w3, w19
	mov	w2, w20
	mov	w1, w21
	adrp	x0, .LC123
	add	x0, x0, :lo12:.LC123
	bl	printf
	b	.L2088
.L2063:
	tst	x19, 50331648
	bne	.L2066
	adrp	x0, .LANCHOR0
	adrp	x1, .LANCHOR1
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L2067
	ldrb	w0, [x1, #:lo12:.LANCHOR1]
	cbz	w0, .L2066
.L2067:
	adrp	x0, .LANCHOR2
	ldrb	w1, [x1, #:lo12:.LANCHOR1]
	ldrh	w2, [x0, #:lo12:.LANCHOR2]
	udiv	w0, w19, w2
	mul	w0, w0, w2
	sub	w19, w19, w0
	cbz	w1, .L2068
	add	w19, w0, w19, lsl 1
.L2066:
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	bl	flash_read_page
	cmn	w0, #1
	bne	.L2061
	adrp	x20, .LANCHOR51
	ldrb	w25, [x20, #:lo12:.LANCHOR51]
	cbnz	w25, .L2069
.L2072:
	adrp	x0, .LANCHOR172
	ldr	x5, [x0, #:lo12:.LANCHOR172]
	cbnz	x5, .L2070
.L2071:
	ldrb	w4, [x20, #:lo12:.LANCHOR51]
	mov	w3, -1
	mov	w2, w19
	mov	w1, 0
	adrp	x0, .LC124
	add	x0, x0, :lo12:.LC124
	bl	printf
	adrp	x0, .LANCHOR26
	ldrb	w0, [x0, #:lo12:.LANCHOR26]
	cbz	w0, .L2088
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	b	flash_ddr_tuning_read
.L2068:
	adrp	x1, .LANCHOR3
	add	x1, x1, :lo12:.LANCHOR3
	ldrh	w19, [x1, w19, uxtw 1]
	add	w19, w19, w0
	b	.L2066
.L2069:
	strb	wzr, [x20, #:lo12:.LANCHOR51]
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	bl	flash_read_page
	strb	w25, [x20, #:lo12:.LANCHOR51]
	cmn	w0, #1
	beq	.L2072
	b	.L2061
.L2070:
	mov	w4, w24
	mov	x3, x23
	mov	x2, x22
	mov	w1, w19
	mov	w0, w21
	blr	x5
	cmn	w0, #1
	beq	.L2071
	b	.L2061
	.size	flash_read_page_en, .-flash_read_page_en
	.section	.text.flash_get_last_written_page,"ax",@progbits
	.align	2
	.global	flash_get_last_written_page
	.type	flash_get_last_written_page, %function
flash_get_last_written_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	and	w23, w0, 255
	adrp	x0, .LANCHOR145
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	mov	x24, x2
	ldrh	w19, [x0, #:lo12:.LANCHOR145]
	adrp	x0, .LANCHOR32+26
	stp	x21, x22, [sp, 32]
	and	w21, w1, 65535
	ldrh	w26, [x0, #:lo12:.LANCHOR32+26]
	sub	w19, w19, #1
	sxth	w19, w19
	stp	x27, x28, [sp, 80]
	mov	x22, x3
	mov	w25, w4
	mov	w0, w23
	mul	w26, w26, w21
	add	w1, w19, w26
	bl	flash_read_page_en
	cmp	w0, 512
	bne	.L2090
	mov	w27, 0
	mov	w28, 2
.L2091:
	cmp	w27, w19
	ble	.L2094
.L2090:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2095
	ldr	w3, [x22]
	adrp	x0, .LC125
	mov	w2, w19
	mov	w1, w21
	add	x0, x0, :lo12:.LC125
	bl	printf
.L2095:
	mov	w0, w19
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2094:
	add	w20, w27, w19
	mov	w4, w25
	mov	x3, x22
	mov	x2, x24
	mov	w0, w23
	sdiv	w20, w20, w28
	add	w1, w26, w20, sxth
	bl	flash_read_page_en
	cmp	w0, 512
	bne	.L2092
	sub	w19, w20, #1
	sxth	w19, w19
	b	.L2091
.L2092:
	add	w20, w20, 1
	sxth	w27, w20
	b	.L2091
	.size	flash_get_last_written_page, .-flash_get_last_written_page
	.section	.text.flash_get_last_written_page_ext,"ax",@progbits
	.align	2
	.global	flash_get_last_written_page_ext
	.type	flash_get_last_written_page_ext, %function
flash_get_last_written_page_ext:
	adrp	x4, .LANCHOR31
	mov	w5, 24
	and	w0, w0, 65535
	mov	w6, 1
	ldrb	w4, [x4, #:lo12:.LANCHOR31]
	sub	w5, w5, w4
	adrp	x4, .LANCHOR80
	ldrh	w4, [x4, #:lo12:.LANCHOR80]
	sub	w5, w5, w4
	mov	w4, w3
	mov	x3, x2
	mov	x2, x1
	lsl	w6, w6, w5
	sub	w6, w6, #1
	and	w1, w6, w0
	asr	w0, w0, w5
	b	flash_get_last_written_page
	.size	flash_get_last_written_page_ext, .-flash_get_last_written_page_ext
	.section	.text.flash_ddr_para_scan,"ax",@progbits
	.align	2
	.global	flash_ddr_para_scan
	.type	flash_ddr_para_scan, %function
flash_ddr_para_scan:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR48
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	ldrb	w0, [x20, #:lo12:.LANCHOR48]
	adrp	x19, .LANCHOR26
	stp	x23, x24, [sp, 48]
	mov	w21, 1
	mov	w23, w1
	str	x25, [sp, 64]
	strb	w21, [x19, #:lo12:.LANCHOR26]
	adrp	x24, .LANCHOR174
	bl	flash_set_interface_mode
	adrp	x25, .LANCHOR173
	ldrb	w0, [x20, #:lo12:.LANCHOR48]
	bl	nandc_set_if_mode
	ldr	x3, [x25, #:lo12:.LANCHOR173]
	mov	w4, 4
	ldr	x2, [x24, #:lo12:.LANCHOR174]
	mov	w1, w23
	mov	w0, w22
	bl	flash_ddr_tuning_read
	ldr	x3, [x25, #:lo12:.LANCHOR173]
	mov	w4, 4
	ldr	x2, [x24, #:lo12:.LANCHOR174]
	mov	w1, w23
	mov	w0, w22
	bl	flash_read_page
	cmn	w0, #1
	mov	x0, x19
	bne	.L2102
	ldrb	w1, [x20, #:lo12:.LANCHOR48]
	tbz	x1, 0, .L2102
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, w21
	bl	nandc_set_if_mode
	strb	wzr, [x19, #:lo12:.LANCHOR26]
.L2103:
	mov	w0, 0
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L2102:
	mov	w1, 1
	strb	w1, [x0, #:lo12:.LANCHOR26]
	b	.L2103
	.size	flash_ddr_para_scan, .-flash_ddr_para_scan
	.section	.text.flash_prog_page,"ax",@progbits
	.align	2
	.global	flash_prog_page
	.type	flash_prog_page, %function
flash_prog_page:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR7
	stp	x25, x26, [sp, 64]
	stp	x19, x20, [sp, 16]
	mov	w20, 24
	ldr	x26, [x0, #:lo12:.LANCHOR7]
	adrp	x0, .LANCHOR31
	mov	w22, w1
	stp	x23, x24, [sp, 48]
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	x24, x2
	mov	x25, x3
	and	x19, x21, 255
	sub	w0, w20, w0
	mov	w20, 1
	add	x23, x19, 8
	lsl	w20, w20, w0
	sub	w20, w20, #1
	and	w20, w20, w1
	bl	nandc_wait_flash_ready
	mov	w0, w21
	bl	hynix_reconfig_rr_para
	mov	w0, w21
	bl	nandc_cs
	add	x23, x26, x23, lsl 8
	mov	w0, w21
	tst	x22, 50331648
	bne	.L2109
	bl	zftl_flash_enter_slc_mode
.L2110:
	add	x19, x26, x19, lsl 8
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	str	w0, [x19, 2052]
	adrp	x0, .LANCHOR30
	ldrb	w0, [x0, #:lo12:.LANCHOR30]
	cbz	w0, .L2111
	lsr	w0, w20, 24
	str	w0, [x19, 2052]
.L2111:
	mov	w0, w20
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x25
	mov	x3, x24
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w21
	bl	nandc_xfer
	mov	w0, 16
	str	w0, [x19, 2056]
	bl	nandc_wait_flash_ready
	mov	x0, x23
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.31
	and	w2, w3, 4
	tbz	x3, 2, .L2108
	mov	w1, w22
	adrp	x0, .LC126
	add	x0, x0, :lo12:.LC126
	bl	printf
	mov	w2, -1
.L2108:
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2109:
	bl	zftl_flash_exit_slc_mode
	b	.L2110
	.size	flash_prog_page, .-flash_prog_page
	.section	.text.flash_test_blk,"ax",@progbits
	.align	2
	.global	flash_test_blk
	.type	flash_test_blk, %function
flash_test_blk:
	stp	x29, x30, [sp, -64]!
	mov	w2, 32
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR164
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	ldr	x0, [x22, #:lo12:.LANCHOR164]
	adrp	x21, .LANCHOR166
	and	w19, w1, 65535
	str	x23, [sp, 48]
	mov	w1, 165
	bl	ftl_memset
	ldr	x0, [x21, #:lo12:.LANCHOR166]
	mov	w2, 8
	mov	w1, 90
	bl	ftl_memset
	adrp	x0, .LANCHOR2
	ldrh	w0, [x0, #:lo12:.LANCHOR2]
	mul	w19, w0, w19
	mov	w0, w20
	mov	w1, w19
	bl	flash_erase_block
	cmn	w0, #1
	bne	.L2121
.L2123:
	mov	w21, -1
.L2122:
	mov	w1, w19
	mov	w0, w20
	bl	flash_erase_block
	ldr	x23, [sp, 48]
	mov	w0, w21
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L2121:
	adrp	x23, .LANCHOR32
	add	x23, x23, :lo12:.LANCHOR32
	ldr	x3, [x21, #:lo12:.LANCHOR166]
	mov	w1, w19
	ldr	x2, [x22, #:lo12:.LANCHOR164]
	mov	w0, w20
	ldrb	w4, [x23, 9]
	bl	flash_prog_page
	cmn	w0, #1
	beq	.L2123
	ldrb	w4, [x23, 9]
	mov	w1, w19
	ldr	x3, [x21, #:lo12:.LANCHOR166]
	mov	w0, w20
	ldr	x2, [x22, #:lo12:.LANCHOR164]
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2123
	ldr	x0, [x22, #:lo12:.LANCHOR164]
	ldr	w1, [x0]
	mov	w0, 42405
	movk	w0, 0xa5a5, lsl 16
	cmp	w1, w0
	bne	.L2123
	ldr	x0, [x21, #:lo12:.LANCHOR166]
	ldr	w1, [x0]
	mov	w0, 23130
	movk	w0, 0x5a5a, lsl 16
	cmp	w1, w0
	csetm	w21, ne
	b	.L2122
	.size	flash_test_blk, .-flash_test_blk
	.section	.text.id_block_prog_msb_ff_data,"ax",@progbits
	.align	2
	.global	id_block_prog_msb_ff_data
	.type	id_block_prog_msb_ff_data, %function
id_block_prog_msb_ff_data:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w0, 255
	adrp	x0, .LANCHOR24
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	ldrb	w0, [x0, #:lo12:.LANCHOR24]
	str	x25, [sp, 64]
	cbnz	w0, .L2131
	adrp	x20, .LANCHOR32
	add	x20, x20, :lo12:.LANCHOR32
	ldrb	w0, [x20, 19]
	sub	w0, w0, #5
	and	w3, w0, 255
	cmp	w3, 63
	bhi	.L2131
	and	w19, w2, 65535
	mov	x2, 16391
	movk	x2, 0x4000, lsl 16
	movk	x2, 0x8000, lsl 48
	lsr	x0, x2, x3
	tbz	x0, 0, .L2131
	adrp	x21, .LANCHOR143
	mov	w23, w1
	add	x21, x21, :lo12:.LANCHOR143
	mov	w25, 65535
	adrp	x24, .LANCHOR164
.L2133:
	ldrh	w0, [x20, 10]
	cmp	w0, w19
	bhi	.L2134
.L2131:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldr	x25, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2134:
	ldrh	w0, [x21, w19, sxtw 1]
	cmp	w0, w25
	bne	.L2131
	ldr	x0, [x24, #:lo12:.LANCHOR164]
	mov	w2, 16384
	mov	w1, 255
	bl	ftl_memset
	ldr	x3, [x24, #:lo12:.LANCHOR164]
	add	w1, w19, w23
	ldrb	w4, [x20, 9]
	add	w19, w19, 1
	mov	x2, x3
	mov	w0, w22
	and	w19, w19, 65535
	bl	flash_prog_page
	b	.L2133
	.size	id_block_prog_msb_ff_data, .-id_block_prog_msb_ff_data
	.section	.text.flash_start_one_pass_page_prog,"ax",@progbits
	.align	2
	.global	flash_start_one_pass_page_prog
	.type	flash_start_one_pass_page_prog, %function
flash_start_one_pass_page_prog:
	stp	x29, x30, [sp, -32]!
	and	w8, w0, 255
	and	w7, w3, 255
	adrp	x0, .LANCHOR7
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w2, 255
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	mov	w0, w7
	bl	nandc_cs
	cbz	w8, .L2137
	sxtw	x0, w7
	add	x0, x0, 8
	add	x0, x19, x0, lsl 8
	str	w8, [x0, 8]
.L2137:
	ubfiz	x0, x7, 8, 8
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w4, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w4, 8
	str	w0, [x19, 2052]
	lsr	w0, w4, 16
	str	w0, [x19, 2052]
	adrp	x0, .LANCHOR30
	ldrb	w0, [x0, #:lo12:.LANCHOR30]
	cbz	w0, .L2138
	lsr	w0, w4, 24
	str	w0, [x19, 2052]
.L2138:
	mov	w0, w4
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x6
	mov	x3, x5
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w7
	bl	nandc_xfer
	str	w20, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	flash_start_one_pass_page_prog, .-flash_start_one_pass_page_prog
	.section	.text.flash_dual_page_prog,"ax",@progbits
	.align	2
	.global	flash_dual_page_prog
	.type	flash_dual_page_prog, %function
flash_dual_page_prog:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	stp	x25, x26, [sp, 64]
	mov	x25, x2
	adrp	x2, .LANCHOR7
	stp	x21, x22, [sp, 32]
	ubfiz	x22, x20, 8, 8
	stp	x27, x28, [sp, 80]
	add	x0, x22, 2048
	ldr	x22, [x2, #:lo12:.LANCHOR7]
	mov	w19, 24
	adrp	x27, .LANCHOR19
	add	x22, x22, x0
	adrp	x0, .LANCHOR31
	stp	x23, x24, [sp, 48]
	mov	w21, w1
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	x26, x3
	mov	x23, x4
	mov	x24, x5
	sub	w0, w19, w0
	mov	w19, 1
	ubfx	x28, x21, 24, 2
	lsl	w19, w19, w0
	ldr	w0, [x27, #:lo12:.LANCHOR19]
	sub	w19, w19, #1
	and	w19, w19, w1
	tbz	x0, 4, .L2147
	adrp	x0, .LC127
	mov	w3, w6
	mov	w2, w28
	add	x0, x0, :lo12:.LC127
	bl	printf
.L2147:
	bl	nandc_wait_flash_ready
	mov	w0, w20
	bl	nandc_cs
	mov	w0, w20
	cbnz	w28, .L2148
	bl	zftl_flash_enter_slc_mode
.L2149:
	mov	x6, x26
	mov	x5, x25
	mov	w4, w19
	mov	w3, w20
	mov	w2, 16
	mov	w1, 0
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x24
	mov	x5, x23
	add	w4, w19, 1
	mov	w3, w20
	mov	w2, 16
	mov	w1, 0
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x0, x22
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.31
	and	w2, w3, 4
	tbz	x3, 2, .L2146
	ldr	w0, [x27, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2151
	adrp	x0, .LC126
	mov	w1, w21
	add	x0, x0, :lo12:.LC126
	bl	printf
.L2151:
	mov	w2, -1
.L2146:
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2148:
	bl	zftl_flash_exit_slc_mode
	b	.L2149
	.size	flash_dual_page_prog, .-flash_dual_page_prog
	.section	.text.ymtc_flash_tlc_page_prog,"ax",@progbits
	.align	2
	.global	ymtc_flash_tlc_page_prog
	.type	ymtc_flash_tlc_page_prog, %function
ymtc_flash_tlc_page_prog:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w20, w0, 255
	str	x25, [sp, 64]
	mov	w25, w1
	adrp	x1, .LANCHOR7
	stp	x21, x22, [sp, 32]
	ubfiz	x22, x20, 8, 8
	mov	w19, 24
	add	x0, x22, 2048
	ldr	x22, [x1, #:lo12:.LANCHOR7]
	mov	w21, 1
	stp	x23, x24, [sp, 48]
	add	x22, x22, x0
	adrp	x0, .LANCHOR31
	mov	x23, x2
	mov	x24, x3
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	sub	w19, w19, w0
	bl	nandc_wait_flash_ready
	lsl	w19, w21, w19
	mov	w0, w20
	sub	w19, w19, #1
	bl	nandc_cs
	and	w19, w19, w25
	mov	w0, w20
	bl	zftl_flash_exit_slc_mode
	mov	x6, x24
	mov	x5, x23
	mov	w4, w19
	mov	w3, w20
	mov	w1, w21
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x24
	mov	x5, x23
	add	w4, w19, w21
	mov	w3, w20
	mov	w1, w21
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x6, x24
	mov	x5, x23
	add	w4, w19, 2
	mov	w3, w20
	mov	w1, w21
	mov	w2, 16
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	mov	x0, x22
	bl	flash_read_status
	mov	w3, w0
	bl	nandc_de_cs.constprop.31
	and	w2, w3, 4
	tbz	x3, 2, .L2159
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2161
	adrp	x0, .LC128
	mov	w1, w25
	add	x0, x0, :lo12:.LC128
	bl	printf
.L2161:
	mov	w2, -1
.L2159:
	mov	w0, w2
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
	.size	ymtc_flash_tlc_page_prog, .-ymtc_flash_tlc_page_prog
	.section	.text.fw_flash_page_prog.constprop.28,"ax",@progbits
	.align	2
	.type	fw_flash_page_prog.constprop.28, %function
fw_flash_page_prog.constprop.28:
	stp	x29, x30, [sp, -64]!
	adrp	x4, .LANCHOR32
	add	x4, x4, :lo12:.LANCHOR32
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x1
	stp	x21, x22, [sp, 32]
	mov	x21, x2
	str	x23, [sp, 48]
	ldrb	w19, [x4, 9]
	udiv	w19, w0, w19
	adrp	x0, .LANCHOR49
	ldrb	w23, [x0, #:lo12:.LANCHOR49]
	adrp	x0, .LANCHOR22
	ldrb	w0, [x0, #:lo12:.LANCHOR22]
	bl	nandc_bch_sel
	ldrb	w0, [x4, 7]
	cmp	w0, 9
	bne	.L2167
	adrp	x0, .LANCHOR24
	ldrb	w0, [x0, #:lo12:.LANCHOR24]
	cbnz	w0, .L2167
	ldrb	w0, [x4, 12]
	cmp	w0, 3
	bne	.L2168
	mov	x3, x21
	mov	x2, x20
	mov	w1, w19
	mov	w0, 0
	bl	ymtc_flash_tlc_page_prog
.L2171:
	mov	w4, w0
	mov	w0, w23
	bl	nandc_bch_sel
	ldr	x23, [sp, 48]
	mov	w0, w4
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
.L2168:
	adrp	x22, .LANCHOR164
	mov	w2, 16384
	mov	w1, 255
	ldr	x0, [x22, #:lo12:.LANCHOR164]
	bl	ftl_memset
	ldr	x5, [x22, #:lo12:.LANCHOR164]
	mov	w6, 4
	mov	x3, x21
	mov	x2, x20
	mov	x4, x5
	mov	w1, w19
	mov	w0, 0
	bl	flash_dual_page_prog
	b	.L2171
.L2167:
	mov	w4, 4
	mov	x3, x21
	mov	x2, x20
	mov	w1, w19
	mov	w0, 0
	bl	flash_prog_page
	b	.L2171
	.size	fw_flash_page_prog.constprop.28, .-fw_flash_page_prog.constprop.28
	.section	.text.idb_write_data,"ax",@progbits
	.align	2
	.global	idb_write_data
	.type	idb_write_data, %function
idb_write_data:
	stp	x29, x30, [sp, -272]!
	cmp	w1, 64
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w1
	stp	x21, x22, [sp, 32]
	mov	w20, w3
	stp	x23, x24, [sp, 48]
	adrp	x22, .LANCHOR141
	stp	x25, x26, [sp, 64]
	mov	x24, x2
	stp	x27, x28, [sp, 80]
	bne	.L2173
	ldr	w0, [x2]
	mov	w1, 35899
	movk	w1, 0xfcdc, lsl 16
	cmp	w0, w1
	mov	w1, 19282
	movk	w1, 0x534e, lsl 16
	ccmp	w0, w1, 4, ne
	beq	.L2174
	add	w1, w1, 327680
	cmp	w0, w1
	bne	.L2173
.L2174:
	adrp	x21, .LANCHOR139
	mov	w1, 1
	strb	w1, [x22, #:lo12:.LANCHOR141]
	ldr	x0, [x21, #:lo12:.LANCHOR139]
	cbnz	x0, .L2175
	mov	w0, 262144
	bl	ftl_malloc
	str	x0, [x21, #:lo12:.LANCHOR139]
.L2175:
	adrp	x0, .LANCHOR175
	mov	w1, 64
	str	w1, [x0, #:lo12:.LANCHOR175]
.L2173:
	ldrb	w0, [x22, #:lo12:.LANCHOR141]
	cbz	w0, .L2241
	adrp	x0, .LANCHOR139
	mov	x23, x0
	ldr	x21, [x0, #:lo12:.LANCHOR139]
	cbz	x21, .L2241
	add	w0, w19, w20
	str	w0, [x29, 140]
	cmp	w0, 63
	bls	.L2177
	cmp	w19, 575
	bhi	.L2178
	adrp	x21, .LANCHOR142
	ldr	x0, [x21, #:lo12:.LANCHOR142]
	cbz	x0, .L2179
.L2182:
	adrp	x1, .LANCHOR140
	mov	w2, 1
	ldr	x0, [x23, #:lo12:.LANCHOR139]
	cmp	w19, 64
	str	w2, [x1, #:lo12:.LANCHOR140]
	bhi	.L2294
	mov	w4, 64
	sub	w4, w4, w19
	sub	w2, w20, w4
	ubfiz	x4, x4, 9, 25
	lsl	w2, w2, 9
	add	x1, x24, x4
.L2300:
	bl	ftl_memcpy
.L2183:
	adrp	x0, .LANCHOR175
	ldr	w0, [x0, #:lo12:.LANCHOR175]
	cmp	w19, w0
	beq	.L2237
	strb	wzr, [x22, #:lo12:.LANCHOR141]
	b	.L2237
.L2179:
	mov	w0, 262144
	bl	ftl_malloc
	str	x0, [x21, #:lo12:.LANCHOR142]
	cbnz	x0, .L2182
	mov	w0, -1
	b	.L2172
.L2294:
	mov	w2, 576
	sub	w2, w2, w19
	cmp	w20, w2
	sub	w3, w19, #64
	csel	w2, w20, w2, ls
	ubfiz	x3, x3, 9, 25
	lsl	w2, w2, 9
	mov	x1, x24
	add	x0, x0, x3
	b	.L2300
.L2177:
	cmp	w19, 575
	bls	.L2183
.L2178:
	adrp	x0, .LANCHOR140
	ldr	w0, [x0, #:lo12:.LANCHOR140]
	cbz	w0, .L2183
	ldr	w0, [x21]
	mov	w1, 35899
	movk	w1, 0xfcdc, lsl 16
	cmp	w0, w1
	mov	w1, 19282
	movk	w1, 0x534e, lsl 16
	ccmp	w0, w1, 4, ne
	beq	.L2184
	add	w1, w1, 327680
	cmp	w0, w1
	bne	.L2185
.L2184:
	adrp	x0, .LANCHOR0
	mov	x20, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR0]
	str	w1, [x29, 176]
	adrp	x1, .LANCHOR24
	mov	x24, x1
	ldr	w0, [x29, 176]
	ldrb	w2, [x1, #:lo12:.LANCHOR24]
	str	w2, [x29, 204]
	cbz	w0, .L2186
	ldrh	w0, [x29, 176]
	str	w0, [x29, 172]
	uxtw	x0, w2
	cmp	w0, 0
	cset	w0, eq
.L2297:
	adrp	x23, .LANCHOR32
	add	x23, x23, :lo12:.LANCHOR32
	str	w0, [x29, 200]
	mov	w0, 0
	ldrb	w19, [x23, 9]
	ldrh	w22, [x23, 26]
	bl	zftl_flash_exit_slc_mode
	ldrb	w0, [x24, #:lo12:.LANCHOR24]
	add	x1, x21, 258048
	strb	w0, [x20, #:lo12:.LANCHOR0]
	mov	w4, 16981
	ldrh	w20, [x23, 10]
	add	x1, x1, 2044
	ldrb	w0, [x23, 12]
	mov	w2, 65023
	movk	w4, 0x4f4f, lsl 16
	mov	w3, 4098
	lsl	w20, w20, 2
	sdiv	w20, w20, w0
	mov	w0, 512
	cmp	w20, 512
	csel	w20, w20, w0, lt
	mov	w0, 0
.L2193:
	ldr	w5, [x1]
	cbnz	w5, .L2189
	cbnz	w0, .L2190
	str	w4, [x1, 2048]
.L2191:
	add	w0, w0, 1
	sub	w2, w2, #1
	cmp	w0, w3
	sub	x1, x1, #4
	csel	w0, w0, wzr, ls
	cmp	w2, 4096
	bne	.L2193
.L2189:
	ldr	w1, [x21, w2, uxtw 2]
	mov	w3, w20
	adrp	x0, .LC129
	add	x0, x0, :lo12:.LC129
	bl	printf
	str	wzr, [x29, 180]
	mul	w0, w22, w19
	str	wzr, [x29, 192]
	str	w0, [x29, 128]
	adrp	x0, .LANCHOR51
	add	x0, x0, :lo12:.LANCHOR51
	str	x0, [x29, 184]
.L2232:
	adrp	x23, .LANCHOR142
	mov	w1, 0
	mov	w2, 512
	ldr	x0, [x23, #:lo12:.LANCHOR142]
	bl	ftl_memset
	str	x23, [x29, 160]
	adrp	x0, .LANCHOR6
	ldr	w1, [x29, 192]
	ldr	x0, [x0, #:lo12:.LANCHOR6]
	add	x0, x0, x1, uxtw
	ldrb	w19, [x0, 32]
	cmp	w19, 255
	beq	.L2194
	ldr	w0, [x29, 128]
	mul	w19, w19, w0
	ldr	w0, [x29, 200]
	cbz	w0, .L2195
	and	w0, w1, -3
	adrp	x24, .LANCHOR0
	cmp	w0, 1
	adrp	x22, .LANCHOR24
	beq	.L2196
	ldr	w0, [x29, 200]
	cmp	w0, 3
	bne	.L2197
.L2196:
	ldrb	w0, [x29, 172]
	strb	w0, [x24, #:lo12:.LANCHOR0]
	strb	w0, [x22, #:lo12:.LANCHOR24]
.L2195:
	adrp	x22, .LANCHOR32
	add	x27, x22, :lo12:.LANCHOR32
	ldr	x0, [x29, 184]
	ldrb	w24, [x27, 9]
	ldrh	w25, [x27, 26]
	ldrb	w0, [x0]
	str	w0, [x29, 136]
	udiv	w1, w19, w24
	ldr	x0, [x29, 184]
	mul	w25, w25, w24
	strb	wzr, [x0]
	mov	w0, 0
	bl	flash_erase_block
	udiv	w0, w19, w25
	ldrb	w1, [x27, 12]
	msub	w0, w0, w25, w19
	str	w0, [x29, 168]
	sub	w26, w19, w0
	ldrh	w0, [x27, 10]
	cmp	w19, w26
	lsl	w0, w0, 2
	sdiv	w0, w0, w1
	str	w0, [x29, 156]
	bne	.L2247
	adrp	x0, .LANCHOR27
	ldrb	w0, [x0, #:lo12:.LANCHOR27]
	cmp	w0, 9
	bne	.L2247
	ldr	x0, [x29, 160]
	mov	w2, 1024
	mov	w1, 0
	ldr	x25, [x0, #:lo12:.LANCHOR142]
	mov	x0, x25
	bl	ftl_memset
	mov	w0, 18766
	movk	w0, 0x464e, lsl 16
	str	w0, [x25]
	mov	w0, 12
	str	w0, [x25, 4]
	adrp	x0, .LANCHOR24
	strb	wzr, [x25, 16]
	str	wzr, [x25, 12]
	ldrb	w0, [x0, #:lo12:.LANCHOR24]
	cbz	w0, .L2199
	ldrb	w0, [x27, 29]
	strb	w0, [x25, 16]
.L2199:
	add	x1, x22, :lo12:.LANCHOR32
	mov	w0, 4
	strb	w0, [x25, 17]
	cmp	w24, 8
	strb	wzr, [x25, 20]
	ldrh	w0, [x1, 10]
	ldrb	w1, [x1, 12]
	strh	wzr, [x25, 22]
	sdiv	w0, w0, w1
	mov	w1, 16
	strh	w0, [x25, 18]
	mov	w0, 70
	csel	w0, w0, w1, hi
	strb	w0, [x25, 21]
	mov	w1, 12
	add	x0, x25, 12
	bl	js_hash
	str	w0, [x25, 8]
	sub	w0, w20, #4
	str	w0, [x29, 196]
.L2198:
	adrp	x27, .LANCHOR3
	mov	x23, x21
	add	x27, x27, :lo12:.LANCHOR3
	adrp	x0, .LANCHOR24
	mov	w28, 0
	add	x0, x0, :lo12:.LANCHOR24
	str	x0, [x29, 144]
.L2201:
	ldr	w0, [x29, 156]
	cmp	w0, w28
	bhi	.L2212
	ldr	x0, [x29, 160]
	add	x22, x22, :lo12:.LANCHOR32
	mov	w24, 4
	mov	w25, 0
	mov	w28, 0
	ldr	x23, [x0, #:lo12:.LANCHOR142]
	ldrb	w0, [x22, 9]
	str	w0, [x29, 144]
	ldrh	w0, [x22, 26]
	ldr	w1, [x29, 144]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR51
	strb	wzr, [x1, #:lo12:.LANCHOR51]
	udiv	w1, w19, w0
	msub	w0, w1, w0, w19
	str	w0, [x29, 168]
	sub	w0, w19, w0
	str	w0, [x29, 152]
	ldr	w0, [x29, 168]
	and	w0, w0, 3
	str	w0, [x29, 160]
	ldr	w0, [x29, 196]
	str	w0, [x29, 156]
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	str	x0, [x29, 112]
.L2213:
	ldr	w0, [x29, 156]
	cmp	w25, w0
	bcc	.L2227
	ldr	x0, [x29, 184]
	ldrb	w1, [x29, 136]
	strb	w1, [x0]
	ldr	w0, [x29, 200]
	cbz	w0, .L2228
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR0
	strb	wzr, [x0, #:lo12:.LANCHOR0]
	adrp	x0, .LANCHOR24
	strb	wzr, [x0, #:lo12:.LANCHOR24]
.L2228:
	ldr	w0, [x29, 196]
	mov	x2, 0
	lsl	w1, w0, 7
	adrp	x0, .LANCHOR142
	ldr	x0, [x0, #:lo12:.LANCHOR142]
.L2229:
	mov	w22, w2
	cmp	w2, w1
	bcc	.L2230
	ldr	w0, [x29, 180]
	add	w0, w0, 1
	str	w0, [x29, 180]
	cmp	w0, 5
	bls	.L2194
	b	.L2239
.L2186:
	ldr	w0, [x29, 204]
	cmp	w0, 3
	beq	.L2243
	cmp	w0, 2
	mov	w0, 2
	csel	w0, wzr, w0, ne
	str	w0, [x29, 172]
	ldr	w0, [x29, 204]
	cmp	w0, 2
	mov	w0, 3
	csel	w0, wzr, w0, ne
	b	.L2297
.L2243:
	ldr	w0, [x29, 204]
	str	w0, [x29, 172]
	mov	w0, 2
	b	.L2297
.L2190:
	ldr	w5, [x21, w0, uxtw 2]
	str	w5, [x1, 2048]
	b	.L2191
.L2197:
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	strb	wzr, [x24, #:lo12:.LANCHOR0]
	strb	wzr, [x22, #:lo12:.LANCHOR24]
	b	.L2195
.L2247:
	mov	x25, 0
	str	w20, [x29, 196]
	b	.L2198
.L2212:
	ldr	w0, [x29, 168]
	adrp	x2, .LANCHOR24
	add	w4, w0, w28
	ldrb	w2, [x2, #:lo12:.LANCHOR24]
	ubfx	x4, x4, 2, 16
	add	w1, w4, 1
	ldrh	w0, [x27, w1, sxtw 1]
	cbz	w2, .L2203
	adrp	x0, .LANCHOR1
	ldrb	w7, [x0, #:lo12:.LANCHOR1]
	lsl	w0, w1, 1
	cmp	w7, 0
	csel	w0, w0, w1, ne
.L2203:
	adrp	x1, .LANCHOR27
	ldrb	w1, [x1, #:lo12:.LANCHOR27]
	cmp	w1, 9
	bne	.L2205
.L2298:
	str	w0, [x29, 208]
	mov	w0, 61424
	str	w0, [x29, 212]
	ldrh	w0, [x27, w4, sxtw 1]
	cbnz	w2, .L2207
	mov	w4, w0
.L2208:
	mul	w0, w24, w4
	cbnz	x25, .L2209
	str	w4, [x29, 152]
	add	x2, x29, 208
	mov	x1, x23
	add	w0, w0, w26
	bl	fw_flash_page_prog.constprop.28
	ldr	x0, [x29, 144]
	ldr	w4, [x29, 152]
	ldrb	w0, [x0]
	cbnz	w0, .L2210
	udiv	w1, w26, w24
	add	w2, w4, 1
	bl	id_block_prog_msb_ff_data
.L2210:
	ldr	w0, [x29, 196]
	add	x23, x23, 2048
	add	w0, w0, 16
	cmp	w28, w0
	bcc	.L2211
	ldr	w0, [x29, 196]
	add	w1, w0, 20
	add	x0, x21, 2048
	cmp	w28, w1
	csel	x23, x0, x23, cc
.L2211:
	add	w5, w28, 4
	mov	x25, 0
	and	w28, w5, 65535
	b	.L2201
.L2205:
	sub	w0, w0, #1
	lsl	w0, w0, 2
	b	.L2298
.L2207:
	adrp	x0, .LANCHOR1
	ldrb	w1, [x0, #:lo12:.LANCHOR1]
	lsl	w0, w4, 1
	cmp	w1, 0
	csel	w4, w0, w4, ne
	b	.L2208
.L2209:
	add	x2, x29, 208
	mov	x1, x25
	add	w0, w0, w26
	bl	fw_flash_page_prog.constprop.28
	b	.L2211
.L2227:
	ldr	w0, [x29, 160]
	adrp	x1, .LANCHOR24
	sub	w27, w24, w0
	ldr	w0, [x29, 168]
	ldrb	w1, [x1, #:lo12:.LANCHOR24]
	and	w27, w27, 65535
	add	w22, w0, w25
	ldr	x0, [x29, 112]
	udiv	w22, w22, w24
	and	w22, w22, 65535
	ldrh	w0, [x0, w22, sxtw 1]
	cbnz	w1, .L2214
	mov	w22, w0
.L2215:
	adrp	x0, .LANCHOR22
	ldr	w1, [x29, 152]
	ldrb	w26, [x0, #:lo12:.LANCHOR22]
	ldr	w0, [x29, 160]
	add	w0, w0, w1
	ldr	w1, [x29, 144]
	madd	w22, w1, w22, w0
	adrp	x0, .LANCHOR32+9
	ldrb	w0, [x0, #:lo12:.LANCHOR32+9]
	udiv	w22, w22, w0
	adrp	x0, .LANCHOR49
	ldrb	w0, [x0, #:lo12:.LANCHOR49]
	str	w0, [x29, 132]
	mov	w0, w26
	bl	nandc_bch_sel
	adrp	x0, .LANCHOR26
	add	x0, x0, :lo12:.LANCHOR26
	str	x0, [x29, 120]
.L2216:
	mov	w4, w24
	add	x3, x29, 208
	mov	x2, x23
	mov	w1, w22
	mov	w0, 0
	bl	flash_read_page
	mov	w5, w0
	cmn	w0, #1
	bne	.L2217
	ldr	x0, [x29, 184]
	ldrb	w6, [x0]
	cbnz	w6, .L2218
.L2221:
	adrp	x0, .LANCHOR172
	ldr	x6, [x0, #:lo12:.LANCHOR172]
	cbnz	x6, .L2219
.L2220:
	ldr	x0, [x29, 120]
	ldrb	w0, [x0]
	cbz	w0, .L2217
	mov	w4, w24
	add	x3, x29, 208
	mov	x2, x23
	mov	w1, w22
	mov	w0, 0
	bl	flash_ddr_tuning_read
	b	.L2299
.L2214:
	adrp	x0, .LANCHOR1
	ldrb	w1, [x0, #:lo12:.LANCHOR1]
	lsl	w0, w22, 1
	cmp	w1, 0
	csel	w22, w0, w22, ne
	b	.L2215
.L2218:
	ldr	x0, [x29, 184]
	mov	w1, w22
	stp	w6, w5, [x29, 104]
	mov	w4, w24
	add	x3, x29, 208
	mov	x2, x23
	strb	wzr, [x0]
	mov	w0, 0
	bl	flash_read_page
	cmn	w0, #1
	ldr	x1, [x29, 184]
	ldp	w6, w5, [x29, 104]
	strb	w6, [x1]
	beq	.L2221
.L2299:
	mov	w5, w0
.L2217:
	cmn	w5, #1
	cset	w4, eq
	cmp	w26, 16
	cset	w0, ne
	tst	w4, w0
	beq	.L2223
	mov	w0, 16
	mov	w26, 16
	bl	nandc_bch_sel
	b	.L2216
.L2219:
	str	w5, [x29, 108]
	mov	w4, w24
	add	x3, x29, 208
	mov	x2, x23
	mov	w1, w22
	mov	w0, 0
	blr	x6
	cmn	w0, #1
	ldr	w5, [x29, 108]
	beq	.L2220
	b	.L2299
.L2223:
	ldr	w0, [x29, 132]
	bl	nandc_bch_sel
	cmp	w4, 0
	ldr	w0, [x29, 152]
	csinv	w28, w28, wzr, eq
	cmp	w25, 0
	ccmp	w19, w0, 0, eq
	bne	.L2225
	cbnz	w28, .L2225
	ldr	w1, [x23]
	mov	w0, 18766
	movk	w0, 0x464e, lsl 16
	cmp	w1, w0
	bne	.L2225
	ldr	w0, [x29, 156]
	ldrb	w24, [x23, 17]
	add	w0, w0, w27
	str	w0, [x29, 156]
.L2226:
	add	w25, w27, w25
	and	w25, w25, 65535
	b	.L2213
.L2225:
	ubfiz	x0, x27, 9, 16
	str	wzr, [x29, 160]
	add	x23, x23, x0
	b	.L2226
.L2230:
	ldr	w4, [x0, x2, lsl 2]
	add	x2, x2, 1
	add	x3, x21, x2, lsl 2
	ldr	w3, [x3, -4]
	cmp	w4, w3
	beq	.L2229
	mov	w2, 512
	mov	w1, 0
	bl	ftl_memset
	mov	w1, w22
	adrp	x0, .LC130
	add	x0, x0, :lo12:.LC130
	bl	printf
	mov	w1, w19
	mov	w0, 0
	bl	flash_erase_block
.L2194:
	ldr	w0, [x29, 192]
	add	w0, w0, 1
	str	w0, [x29, 192]
	cmp	w0, 4
	bne	.L2232
.L2239:
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR0
	ldrb	w1, [x29, 176]
	strb	w1, [x0, #:lo12:.LANCHOR0]
	ldr	w0, [x29, 200]
	cbz	w0, .L2233
	adrp	x0, .LANCHOR24
	ldrb	w1, [x29, 204]
	strb	w1, [x0, #:lo12:.LANCHOR24]
.L2233:
	mov	w1, 2
	adrp	x0, .LANCHOR33
	strb	w1, [x0, #:lo12:.LANCHOR33]
	mov	w0, 0
	bl	zftl_flash_enter_slc_mode
	ldr	w0, [x29, 180]
	cbnz	w0, .L2185
	adrp	x0, .LC131
	mov	w1, 0
	add	x0, x0, :lo12:.LC131
	bl	printf
.L2185:
	adrp	x0, .LANCHOR140
	str	wzr, [x0, #:lo12:.LANCHOR140]
	adrp	x0, .LANCHOR141
	strb	wzr, [x0, #:lo12:.LANCHOR141]
	adrp	x0, .LANCHOR139
	ldr	x1, [x0, #:lo12:.LANCHOR139]
	cbz	x1, .L2235
	str	xzr, [x0, #:lo12:.LANCHOR139]
.L2235:
	adrp	x0, .LANCHOR142
	ldr	x1, [x0, #:lo12:.LANCHOR142]
	cbz	x1, .L2237
	str	xzr, [x0, #:lo12:.LANCHOR142]
.L2237:
	adrp	x0, .LANCHOR175
	ldr	w1, [x29, 140]
	str	w1, [x0, #:lo12:.LANCHOR175]
.L2241:
	mov	w0, 0
.L2172:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 272
	ret
	.size	idb_write_data, .-idb_write_data
	.section	.text.flash_start_tlc_page_prog,"ax",@progbits
	.align	2
	.global	flash_start_tlc_page_prog
	.type	flash_start_tlc_page_prog, %function
flash_start_tlc_page_prog:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x25, x26, [sp, 64]
	and	w25, w0, 255
	adrp	x0, .LANCHOR23
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	and	w21, w1, 255
	stp	x23, x24, [sp, 48]
	and	w26, w3, 255
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	and	w22, w2, 255
	mov	w20, w4
	mov	x23, x5
	mov	x24, x6
	cmp	w1, w26
	mov	x19, x0
	bhi	.L2302
	adrp	x1, .LANCHOR176
	adrp	x0, .LC0
	mov	w2, 868
	add	x1, x1, :lo12:.LANCHOR176
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2302:
	ldrb	w0, [x19, #:lo12:.LANCHOR23]
	cmp	w0, w26
	bls	.L2301
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w5, [x0, w26, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	mov	w0, w5
	bl	nandc_cs
	cbz	w25, .L2304
	sxtw	x0, w5
	add	x0, x0, 8
	add	x0, x19, x0, lsl 8
	str	w25, [x0, 8]
.L2304:
	ubfiz	x0, x5, 8, 8
	add	x19, x19, x0
	mov	w0, 128
	str	w21, [x19, 2056]
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	add	w20, w20, w20, lsl 1
	str	w0, [x19, 2052]
	sub	w0, w20, #1
	add	w0, w0, w21
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x24
	mov	x3, x23
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w5
	bl	nandc_xfer
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	str	w22, [x19, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 80
	b	nandc_de_cs.constprop.31
.L2301:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
	.size	flash_start_tlc_page_prog, .-flash_start_tlc_page_prog
	.section	.text.queue_tlc_prog_cmd,"ax",@progbits
	.align	2
	.type	queue_tlc_prog_cmd, %function
queue_tlc_prog_cmd:
	stp	x29, x30, [sp, -64]!
	mov	w2, 24
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	x21, x0
	ldr	x7, [x0]
	adrp	x0, .LANCHOR31
	mov	w22, 1
	stp	x19, x20, [sp, 16]
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	str	x23, [sp, 48]
	mov	w23, w1
	sub	w2, w2, w0
	ldr	w1, [x7, 40]
	lsl	w19, w22, w0
	adrp	x0, .LANCHOR36
	lsl	w20, w22, w2
	sub	w19, w19, #1
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	sub	w20, w20, #1
	and	w20, w20, w1
	lsr	w1, w1, w2
	and	w19, w19, w1
	and	w19, w19, 255
	cbz	w0, .L2310
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x21]
	mov	w4, w20
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 8]
	add	w4, w20, w22
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 16]
	add	w4, w20, 2
	mov	w3, w19
	mov	w2, 16
	mov	w1, w22
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2311:
	cbz	w23, .L2309
	ldr	x1, [x21]
	mov	w0, 4
	strb	w0, [x1, 58]
	mov	w0, 1
	strb	w0, [x1, 59]
	mov	w0, -1
	strb	w0, [x1]
	adrp	x0, .LANCHOR59
	add	x0, x0, :lo12:.LANCHOR59
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	b	buf_add_tail
.L2310:
	ldr	x5, [x7, 8]
	mov	w4, w20
	ldr	x6, [x7, 24]
	mov	w3, w19
	ldrb	w0, [x7, 60]
	mov	w1, w22
	mov	w2, 26
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldp	x7, x0, [x21]
	mov	w4, w20
	mov	w3, w19
	mov	w2, 26
	mov	w1, 2
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x21, 16]
	mov	w4, w20
	ldr	x7, [x21]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	b	.L2311
.L2309:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	queue_tlc_prog_cmd, .-queue_tlc_prog_cmd
	.section	.text.sblk_3d_tlc_dump_prog,"ax",@progbits
	.align	2
	.global	sblk_3d_tlc_dump_prog
	.type	sblk_3d_tlc_dump_prog, %function
sblk_3d_tlc_dump_prog:
	stp	x29, x30, [sp, -48]!
	mov	w2, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	ldr	w1, [x0, 40]
	adrp	x0, .LANCHOR31
	stp	x21, x22, [sp, 32]
	mov	w22, 1
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	sub	w2, w2, w0
	lsl	w19, w22, w0
	adrp	x0, .LANCHOR36
	lsl	w21, w22, w2
	sub	w19, w19, #1
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	sub	w21, w21, #1
	and	w21, w21, w1
	lsr	w1, w1, w2
	and	w19, w19, w1
	and	w19, w19, 255
	cbz	w0, .L2315
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	add	w4, w21, w22
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	add	w4, w21, 2
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 16
	mov	w1, w22
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2316:
	bl	nandc_wait_flash_ready
	ldr	w0, [x20, 40]
	mov	w1, 64
	ldp	x21, x22, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	b	flash_wait_device_ready
.L2315:
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w1, w22
	mov	w2, 26
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 26
	mov	w1, 2
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x5, [x20, 8]
	mov	w4, w21
	ldr	x6, [x20, 24]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	mov	w0, 0
	bl	flash_start_tlc_page_prog
	b	.L2316
	.size	sblk_3d_tlc_dump_prog, .-sblk_3d_tlc_dump_prog
	.section	.text.flash_start_3d_mlc_page_prog,"ax",@progbits
	.align	2
	.global	flash_start_3d_mlc_page_prog
	.type	flash_start_3d_mlc_page_prog, %function
flash_start_3d_mlc_page_prog:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR23
	stp	x19, x20, [sp, 16]
	stp	x23, x24, [sp, 48]
	and	w24, w1, 255
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	mov	w20, w2
	mov	x22, x3
	mov	x23, x4
	cmp	w1, w24
	mov	x19, x0
	bhi	.L2319
	adrp	x1, .LANCHOR177
	adrp	x0, .LC0
	mov	w2, 903
	add	x1, x1, :lo12:.LANCHOR177
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2319:
	ldrb	w0, [x19, #:lo12:.LANCHOR23]
	cmp	w0, w24
	bls	.L2318
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w5, [x0, w24, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x19, [x0, #:lo12:.LANCHOR7]
	mov	w0, w5
	bl	nandc_cs
	ubfiz	x0, x5, 8, 8
	add	x19, x19, x0
	mov	w0, 128
	str	w0, [x19, 2056]
	and	w0, w20, 255
	str	wzr, [x19, 2052]
	str	wzr, [x19, 2052]
	str	w0, [x19, 2052]
	lsr	w0, w20, 8
	str	w0, [x19, 2052]
	lsr	w0, w20, 16
	str	w0, [x19, 2052]
	mov	w0, w20
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x23
	mov	x3, x22
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w5
	bl	nandc_xfer
	str	w21, [x19, 2056]
.L2318:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
	.size	flash_start_3d_mlc_page_prog, .-flash_start_3d_mlc_page_prog
	.section	.text.sblk_mlc_dump_prog,"ax",@progbits
	.align	2
	.global	sblk_mlc_dump_prog
	.type	sblk_mlc_dump_prog, %function
sblk_mlc_dump_prog:
	stp	x29, x30, [sp, -48]!
	mov	w2, 24
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	ldr	w1, [x0, 40]
	adrp	x0, .LANCHOR31
	str	x21, [sp, 32]
	ldrb	w19, [x0, #:lo12:.LANCHOR31]
	mov	w0, 1
	sub	w2, w2, w19
	lsl	w19, w0, w19
	sub	w19, w19, #1
	lsl	w21, w0, w2
	sub	w21, w21, #1
	and	w21, w21, w1
	lsr	w1, w1, w2
	and	w19, w19, w1
	and	w19, w19, 255
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2323
	ldr	w2, [x20, 40]
	adrp	x0, .LC132
	mov	w1, w21
	add	x0, x0, :lo12:.LC132
	add	w3, w2, 1
	bl	printf
.L2323:
	ldr	x3, [x20, 8]
	mov	w2, w21
	ldr	x4, [x20, 24]
	mov	w1, w19
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x3, [x20, 8]
	add	w2, w21, 1
	ldr	x4, [x20, 24]
	mov	w1, w19
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	w0, [x20, 40]
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w2, w0
	bl	nandc_de_cs.constprop.31
	ldr	x21, [sp, 32]
	mov	w0, w2
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	sblk_mlc_dump_prog, .-sblk_mlc_dump_prog
	.section	.text.flash_start_page_prog,"ax",@progbits
	.align	2
	.global	flash_start_page_prog
	.type	flash_start_page_prog, %function
flash_start_page_prog:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	adrp	x0, .LANCHOR31
	stp	x19, x20, [sp, 16]
	stp	x25, x26, [sp, 64]
	mov	w19, 24
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	w20, 1
	str	x27, [sp, 80]
	adrp	x27, .LANCHOR23
	sub	w25, w19, w0
	stp	x23, x24, [sp, 48]
	lsl	w20, w20, w0
	sub	w20, w20, #1
	lsr	w0, w1, w25
	and	w20, w20, w0
	ldrb	w0, [x27, #:lo12:.LANCHOR23]
	and	w20, w20, 255
	mov	w24, w1
	mov	x22, x2
	mov	x23, x3
	cmp	w0, w20
	bhi	.L2329
	adrp	x1, .LANCHOR178
	adrp	x0, .LC0
	mov	w2, 956
	add	x1, x1, :lo12:.LANCHOR178
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2329:
	ldrb	w0, [x27, #:lo12:.LANCHOR23]
	cmp	w0, w20
	bls	.L2328
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	mov	w19, 1
	lsl	w19, w19, w25
	sub	w19, w19, #1
	ldrb	w26, [x0, w20, sxtw]
	adrp	x0, .LANCHOR7
	and	w19, w19, w24
	ldr	x25, [x0, #:lo12:.LANCHOR7]
	bl	nandc_rdy_status
	cbnz	w0, .L2331
	ldrb	w0, [x27, #:lo12:.LANCHOR23]
	cmp	w0, 1
	bne	.L2332
	bl	nandc_wait_flash_ready
.L2331:
	mov	w0, w26
	bl	hynix_reconfig_rr_para
	mov	w0, w26
	bl	nandc_cs
	tst	x24, 50331648
	bne	.L2333
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
	adrp	x0, .LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L2334
	mov	w0, w26
	bl	zftl_flash_enter_slc_mode
.L2334:
	ubfiz	x20, x26, 8, 8
	mov	w0, 128
	add	x20, x25, x20
	str	w0, [x20, 2056]
	and	w0, w19, 255
	str	wzr, [x20, 2052]
	str	wzr, [x20, 2052]
	str	w0, [x20, 2052]
	lsr	w0, w19, 8
	str	w0, [x20, 2052]
	lsr	w0, w19, 16
	str	w0, [x20, 2052]
	adrp	x0, .LANCHOR30
	ldrb	w0, [x0, #:lo12:.LANCHOR30]
	cbz	w0, .L2335
	lsr	w0, w19, 24
	str	w0, [x20, 2052]
.L2335:
	mov	w0, w19
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x23
	mov	x3, x22
	mov	w1, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w26
	bl	nandc_xfer
	ldr	x27, [sp, 80]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	str	w21, [x20, 2056]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 96
	b	nandc_de_cs.constprop.31
.L2332:
	mov	w2, 64
	mov	w1, w19
	mov	w0, w20
	bl	flash_wait_device_ready_raw
	b	.L2331
.L2333:
	mov	w0, w26
	bl	zftl_flash_exit_slc_mode
	b	.L2334
.L2328:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
	.size	flash_start_page_prog, .-flash_start_page_prog
	.section	.text.queue_prog_cmd,"ax",@progbits
	.align	2
	.type	queue_prog_cmd, %function
queue_prog_cmd:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	ldr	w1, [x0, 40]
	ldr	x3, [x0, 24]
	ldr	x2, [x0, 8]
	str	x19, [sp, 16]
	mov	x19, x0
	mov	w0, 16
	bl	flash_start_page_prog
	adrp	x0, .LANCHOR59
	ldr	w3, [x19, 40]
	ldrb	w1, [x0, #:lo12:.LANCHOR59]
	cmp	w1, 255
	beq	.L2344
	adrp	x2, .LANCHOR31
	mov	w5, 24
	adrp	x6, .LANCHOR55
	add	x6, x6, :lo12:.LANCHOR55
	ldrb	w4, [x2, #:lo12:.LANCHOR31]
	mov	w2, 1
	mov	x8, x6
	sub	w5, w5, w4
	lsl	w2, w2, w4
	sub	w2, w2, #1
	and	w2, w2, 65535
	asr	w3, w3, w5
	and	w3, w3, w2
.L2346:
	add	x7, x6, x1, lsl 6
	ldr	w4, [x7, 40]
	lsr	w4, w4, w5
	and	w4, w2, w4
	cmp	w3, w4
	bne	.L2345
	ldrb	w4, [x7, 58]
	cmp	w4, 7
	bne	.L2345
	mov	w1, 3
	strb	w1, [x7, 58]
.L2344:
	mov	w1, 3
	strb	w1, [x19, 58]
	mov	w1, 1
	strb	w1, [x19, 59]
	mov	w1, -1
	strb	w1, [x19]
	mov	x1, x19
	add	x0, x0, :lo12:.LANCHOR59
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	b	buf_add_tail
.L2345:
	lsl	x1, x1, 6
	ldrb	w1, [x8, x1]
	cmp	w1, 255
	bne	.L2346
	b	.L2344
	.size	queue_prog_cmd, .-queue_prog_cmd
	.section	.text.flash_complete_plane_page_read,"ax",@progbits
	.align	2
	.global	flash_complete_plane_page_read
	.type	flash_complete_plane_page_read, %function
flash_complete_plane_page_read:
	stp	x29, x30, [sp, -64]!
	mov	w4, 24
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	mov	w24, w0
	adrp	x0, .LANCHOR31
	stp	x21, x22, [sp, 32]
	stp	x19, x20, [sp, 16]
	mov	w19, 1
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	x20, x1
	mov	x21, x2
	sub	w22, w4, w0
	lsl	w19, w19, w0
	sub	w19, w19, #1
	lsr	w0, w24, w22
	and	w19, w19, w0
	adrp	x0, .LANCHOR23
	and	w19, w19, 255
	mov	x23, x0
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	cmp	w1, w19
	bhi	.L2353
	adrp	x1, .LANCHOR179
	adrp	x0, .LC0
	mov	w2, 1070
	add	x1, x1, :lo12:.LANCHOR179
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2353:
	ldrb	w0, [x23, #:lo12:.LANCHOR23]
	cmp	w0, w19
	bls	.L2364
	adrp	x2, .LANCHOR29
	add	x2, x2, :lo12:.LANCHOR29
	adrp	x0, .LANCHOR7
	mov	w4, 1
	lsl	w4, w4, w22
	sub	w4, w4, #1
	ldrb	w8, [x2, w19, sxtw]
	and	w4, w4, w24
	ldr	x7, [x0, #:lo12:.LANCHOR7]
	ubfx	x24, x24, 24, 2
	mov	w0, w8
	bl	nandc_cs
	cbnz	w24, .L2355
	mov	w0, w4
	bl	slc_phy_page_address_calc
	mov	w4, w0
.L2355:
	adrp	x0, .LANCHOR25+16
	and	x1, x8, 255
	and	w6, w4, 255
	lsr	w5, w4, 8
	ldrb	w0, [x0, #:lo12:.LANCHOR25+16]
	lsr	w3, w4, 16
	adrp	x2, .LANCHOR30
	cmp	w0, 1
	adrp	x0, .LANCHOR21
	bne	.L2356
	add	x1, x7, x1, lsl 8
	mov	w7, 6
.L2382:
	str	w7, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	str	w6, [x1, 2052]
	str	w5, [x1, 2052]
	str	w3, [x1, 2052]
	ldrb	w2, [x2, #:lo12:.LANCHOR30]
	cbz	w2, .L2378
	lsr	w2, w4, 24
	str	w2, [x1, 2052]
.L2378:
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	mov	w2, 224
	str	w2, [x1, 2056]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2362
	cbz	w24, .L2362
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L2362
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L2362
	add	w4, w4, w4, lsl 1
	sub	w0, w24, #1
	add	w0, w4, w0
.L2379:
	bl	nandc_set_seed
	adrp	x0, .LANCHOR32+9
	mov	x4, x21
	mov	x3, x20
	mov	w1, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR32+9]
	mov	w0, w8
	bl	nandc_xfer
	mov	w2, w0
	bl	nandc_de_cs.constprop.31
	mov	w0, w2
.L2352:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 64
	ret
.L2356:
	ldr	x10, [x0, #:lo12:.LANCHOR21]
	add	x1, x7, x1, lsl 8
	ldrb	w10, [x10, 12]
	cmp	w10, 3
	bne	.L2359
	mov	w7, 5
	b	.L2382
.L2359:
	str	wzr, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	str	w6, [x1, 2052]
	ldrb	w2, [x2, #:lo12:.LANCHOR30]
	str	w5, [x1, 2052]
	str	w3, [x1, 2052]
	cbz	w2, .L2361
	lsr	w2, w4, 24
	str	w2, [x1, 2052]
.L2361:
	mov	w2, 5
	str	w2, [x1, 2056]
	str	wzr, [x1, 2052]
	str	wzr, [x1, 2052]
	b	.L2378
.L2362:
	mov	w0, w4
	b	.L2379
.L2364:
	mov	w0, -1
	b	.L2352
	.size	flash_complete_plane_page_read, .-flash_complete_plane_page_read
	.section	.text.flash_complete_page_read,"ax",@progbits
	.align	2
	.global	flash_complete_page_read
	.type	flash_complete_page_read, %function
flash_complete_page_read:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	w21, w0
	adrp	x0, .LANCHOR31
	stp	x19, x20, [sp, 16]
	mov	x22, x1
	mov	w1, 24
	ldrb	w20, [x0, #:lo12:.LANCHOR31]
	mov	w0, 1
	stp	x23, x24, [sp, 48]
	mov	x23, x2
	sub	w1, w1, w20
	stp	x25, x26, [sp, 64]
	lsl	w20, w0, w20
	sub	w20, w20, #1
	lsl	w19, w0, w1
	adrp	x0, .LANCHOR23
	lsr	w1, w21, w1
	stp	x27, x28, [sp, 80]
	and	w20, w20, w1
	ldrb	w0, [x0, #:lo12:.LANCHOR23]
	sub	w19, w19, #1
	and	w20, w20, 255
	and	w19, w19, w21
	ubfx	x24, x21, 24, 2
	cmp	w0, w20
	bhi	.L2384
	adrp	x1, .LANCHOR180
	adrp	x0, .LC0
	mov	w2, 1232
	add	x1, x1, :lo12:.LANCHOR180
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2384:
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w25, [x0, w20, sxtw]
	adrp	x0, .LANCHOR7
	ldr	x4, [x0, #:lo12:.LANCHOR7]
	mov	w0, w25
	bl	nandc_cs
	cbnz	w24, .L2385
	mov	w0, w19
	bl	slc_phy_page_address_calc
	mov	w19, w0
.L2385:
	adrp	x20, .LANCHOR32
	add	x0, x20, :lo12:.LANCHOR32
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2386
	ubfiz	x0, x25, 8, 8
	mov	w1, 5
	add	x0, x4, x0
	str	w1, [x0, 2056]
	and	w1, w19, 255
	str	wzr, [x0, 2052]
	str	wzr, [x0, 2052]
	str	w1, [x0, 2052]
	lsr	w1, w19, 8
	str	w1, [x0, 2052]
	lsr	w1, w19, 16
	str	w1, [x0, 2052]
	mov	w1, 224
	str	w1, [x0, 2056]
.L2386:
	adrp	x0, .LANCHOR21
	ldr	x0, [x0, #:lo12:.LANCHOR21]
	ldrb	w0, [x0, 12]
	cmp	w0, 3
	bne	.L2387
	cbz	w24, .L2387
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L2387
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbnz	w0, .L2387
	sub	w0, w24, #1
	add	w1, w19, w19, lsl 1
	add	w0, w0, w1
.L2414:
	add	x28, x20, :lo12:.LANCHOR32
	bl	nandc_set_seed
	mov	x4, x23
	mov	x3, x22
	mov	w1, 0
	mov	w0, w25
	ldrb	w2, [x28, 9]
	bl	nandc_xfer
	cmn	w0, #1
	bne	.L2389
	adrp	x26, .LANCHOR51
	ldrb	w27, [x26, #:lo12:.LANCHOR51]
	cbz	w27, .L2390
	ldrb	w4, [x28, 9]
	mov	x3, x23
	strb	wzr, [x26, #:lo12:.LANCHOR51]
	mov	x2, x22
	orr	w1, w19, w24, lsl 24
	mov	w0, w25
	bl	flash_read_page
	strb	w27, [x26, #:lo12:.LANCHOR51]
	cbnz	w24, .L2391
.L2396:
	adrp	x1, .LANCHOR0
	ldrb	w1, [x1, #:lo12:.LANCHOR0]
	cbz	w1, .L2391
	adrp	x1, .LANCHOR49
	ldrb	w1, [x1, #:lo12:.LANCHOR49]
	add	w1, w1, w1, lsl 1
	cmp	w0, w1, lsr 2
	blt	.L2391
	add	x20, x20, :lo12:.LANCHOR32
	ldrb	w1, [x20, 19]
	sub	w1, w1, #4
	and	w1, w1, 255
	cmp	w1, 4
	mov	w1, 256
	csel	w0, w0, w1, hi
.L2383:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2387:
	mov	w0, w19
	b	.L2414
.L2391:
	cmn	w0, #1
	bne	.L2383
.L2397:
	adrp	x0, .LANCHOR172
	ldr	x5, [x0, #:lo12:.LANCHOR172]
	cbnz	x5, .L2393
.L2395:
	adrp	x0, .LANCHOR51
	mov	w3, -1
	mov	w2, w21
	mov	w1, 0
	ldrb	w4, [x0, #:lo12:.LANCHOR51]
	adrp	x0, .LC133
	add	x0, x0, :lo12:.LC133
	bl	printf
	adrp	x0, .LANCHOR26
	ldrb	w0, [x0, #:lo12:.LANCHOR26]
	cbnz	w0, .L2394
	mov	w0, -1
	b	.L2383
.L2393:
	add	x0, x20, :lo12:.LANCHOR32
	mov	x3, x23
	mov	x2, x22
	orr	w1, w19, w24, lsl 24
	ldrb	w4, [x0, 9]
	mov	w0, w25
	blr	x5
	cmn	w0, #1
	beq	.L2395
	b	.L2383
.L2394:
	add	x20, x20, :lo12:.LANCHOR32
	orr	w1, w19, w24, lsl 24
	mov	x3, x23
	mov	x2, x22
	mov	w0, w25
	ldrb	w4, [x20, 9]
	ldp	x21, x22, [sp, 32]
	ldp	x19, x20, [sp, 16]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	b	flash_ddr_tuning_read
.L2390:
	cbz	w24, .L2396
	b	.L2397
.L2389:
	cbnz	w24, .L2383
	b	.L2396
	.size	flash_complete_page_read, .-flash_complete_page_read
	.section	.text.queue_wait_first_req_completed,"ax",@progbits
	.align	2
	.type	queue_wait_first_req_completed, %function
queue_wait_first_req_completed:
	stp	x29, x30, [sp, -96]!
	adrp	x0, .LANCHOR59
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	ldrb	w0, [x0, #:lo12:.LANCHOR59]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	cmp	w0, 255
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	bne	.L2416
.L2449:
	mov	w21, 0
	b	.L2415
.L2416:
	adrp	x19, .LANCHOR55
	sxtw	x20, w0
	add	x1, x19, :lo12:.LANCHOR55
	add	x1, x1, x20, lsl 6
	ldrb	w2, [x1, 58]
	ldr	w21, [x1, 40]
	sub	w3, w2, #1
	cmp	w3, 10
	bhi	.L2449
	adrp	x1, .L2419
	add	x1, x1, :lo12:.L2419
	ldrh	w1, [x1,w3,uxtw #1]
	adr	x3, .Lrtx2419
	add	x1, x3, w1, sxth #2
	br	x1
.Lrtx2419:
	.section	.rodata.queue_wait_first_req_completed,"a",@progbits
	.align	0
	.align	2
.L2419:
	.2byte	(.L2418 - .Lrtx2419) / 4
	.2byte	(.L2420 - .Lrtx2419) / 4
	.2byte	(.L2421 - .Lrtx2419) / 4
	.2byte	(.L2421 - .Lrtx2419) / 4
	.2byte	(.L2421 - .Lrtx2419) / 4
	.2byte	(.L2421 - .Lrtx2419) / 4
	.2byte	(.L2422 - .Lrtx2419) / 4
	.2byte	(.L2423 - .Lrtx2419) / 4
	.2byte	(.L2424 - .Lrtx2419) / 4
	.2byte	(.L2421 - .Lrtx2419) / 4
	.2byte	(.L2424 - .Lrtx2419) / 4
	.section	.text.queue_wait_first_req_completed
.L2418:
	bl	nandc_wait_flash_ready
	add	x0, x19, :lo12:.LANCHOR55
	add	x0, x0, x20, lsl 6
	ldp	x1, x2, [x0, 8]
	cbz	x2, .L2425
	ldrb	w3, [x0, 56]
	adrp	x0, .LANCHOR68
	ldrb	w0, [x0, #:lo12:.LANCHOR68]
	cmp	w3, w0
	csel	x1, x1, x2, ne
.L2425:
	add	x19, x19, :lo12:.LANCHOR55
	mov	w0, w21
	add	x20, x19, x20, lsl 6
	ldr	x2, [x20, 24]
	bl	flash_complete_page_read
	str	w0, [x20, 52]
	mov	w0, 13
	strb	w0, [x20, 58]
	ldrb	w0, [x20, 2]
	orr	w0, w0, 8
	strb	w0, [x20, 2]
	b	.L2449
.L2420:
	bl	nandc_wait_flash_ready
	add	x0, x19, :lo12:.LANCHOR55
	lsl	x2, x20, 6
	add	x1, x0, x2
	ldrb	w21, [x0, x2]
	add	x0, x0, x21, lsl 6
	ldr	x24, [x0, 8]
	ldp	x26, x0, [x1, 8]
	cbz	x0, .L2426
	ldrb	w2, [x1, 56]
	adrp	x1, .LANCHOR68
	ldrb	w1, [x1, #:lo12:.LANCHOR68]
	cmp	w2, w1
	csel	x26, x26, x0, ne
.L2426:
	add	x0, x19, :lo12:.LANCHOR55
	add	x0, x0, x21, lsl 6
	ldr	x1, [x0, 16]
	cbz	x1, .L2427
	ldrb	w2, [x0, 56]
	adrp	x0, .LANCHOR68
	ldrb	w0, [x0, #:lo12:.LANCHOR68]
	cmp	w2, w0
	csel	x24, x24, x1, ne
.L2427:
	add	x22, x19, :lo12:.LANCHOR55
	mov	x1, x26
	add	x27, x22, x20, lsl 6
	add	x22, x22, x21, lsl 6
	ldr	x2, [x27, 24]
	ldr	w0, [x27, 40]
	bl	flash_complete_plane_page_read
	mov	w23, w0
	ldr	x2, [x22, 24]
	mov	x1, x24
	ldr	w0, [x22, 40]
	bl	flash_complete_plane_page_read
	mov	w25, w0
	cmn	w23, #1
	beq	.L2428
	ldr	w0, [x27, 36]
	cmn	w0, #1
	beq	.L2429
	ldr	x1, [x27, 24]
	ldr	w1, [x1, 4]
	cmp	w0, w1
	beq	.L2429
.L2428:
	adrp	x0, .LANCHOR31
	add	x22, x19, :lo12:.LANCHOR55
	add	x22, x22, x20, lsl 6
	mov	w5, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w2
	ldr	x3, [x22, 24]
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR68
	sub	w5, w5, #1
	ldr	w1, [x22, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR68]
	mov	x2, x26
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	mov	w23, w0
	ldr	w2, [x22, 36]
	cmn	w2, #1
	beq	.L2430
	ldr	x0, [x22, 24]
	ldr	w4, [x0, 4]
	cmp	w2, w4
	beq	.L2430
	adrp	x1, .LANCHOR19
	ldr	w1, [x1, #:lo12:.LANCHOR19]
	tbz	x1, 6, .L2430
	ldr	w3, [x0]
	adrp	x0, .LC134
	ldr	w1, [x22, 40]
	add	x0, x0, :lo12:.LC134
	bl	printf
.L2430:
	add	x0, x19, :lo12:.LANCHOR55
	add	x0, x0, x20, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2429
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2429
	adrp	x1, .LANCHOR181
	adrp	x0, .LC0
	mov	w2, 431
	add	x1, x1, :lo12:.LANCHOR181
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2429:
	add	x0, x19, :lo12:.LANCHOR55
	mov	w1, 13
	add	x20, x0, x20, lsl 6
	cmn	w25, #1
	strb	w1, [x20, 58]
	ldrb	w1, [x20, 2]
	str	w23, [x20, 52]
	orr	w1, w1, 8
	strb	w1, [x20, 2]
	beq	.L2431
	add	x0, x0, x21, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2433
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2433
.L2431:
	adrp	x0, .LANCHOR31
	add	x20, x19, :lo12:.LANCHOR55
	add	x20, x20, x21, lsl 6
	mov	w5, 1
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w2
	ldr	x3, [x20, 24]
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR68
	sub	w5, w5, #1
	ldr	w1, [x20, 40]
	ldrb	w4, [x2, #:lo12:.LANCHOR68]
	mov	x2, x24
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	ldr	w2, [x20, 36]
	cmn	w2, #1
	beq	.L2435
	ldr	x0, [x20, 24]
	ldr	w4, [x0, 4]
	cmp	w2, w4
	beq	.L2435
	adrp	x1, .LANCHOR19
	ldr	w1, [x1, #:lo12:.LANCHOR19]
	tbz	x1, 6, .L2435
	ldr	w3, [x0]
	adrp	x0, .LC134
	ldr	w1, [x20, 40]
	add	x0, x0, :lo12:.LC134
	bl	printf
.L2435:
	add	x0, x19, :lo12:.LANCHOR55
	add	x0, x0, x21, lsl 6
	ldr	w1, [x0, 36]
	cmn	w1, #1
	beq	.L2433
	ldr	x0, [x0, 24]
	ldr	w0, [x0, 4]
	cmp	w1, w0
	beq	.L2433
	adrp	x1, .LANCHOR181
	adrp	x0, .LC0
	mov	w2, 450
	add	x1, x1, :lo12:.LANCHOR181
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2433:
	add	x19, x19, :lo12:.LANCHOR55
	mov	w0, 13
	add	x21, x19, x21, lsl 6
	strb	w0, [x21, 58]
	ldrb	w0, [x21, 2]
	str	w23, [x21, 52]
	orr	w0, w0, 8
	strb	w0, [x21, 2]
	b	.L2449
.L2421:
	mov	w0, w21
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w21, w0
	tbz	x21, 6, .L2449
	mov	w0, 5
	tst	w21, w0
	beq	.L2437
	add	x19, x19, :lo12:.LANCHOR55
	mov	w0, 12
	add	x20, x19, x20, lsl 6
	mov	w4, 12
	mov	w2, w21
	ldrb	w1, [x20, 1]
	ldr	w3, [x20, 40]
	strb	w0, [x20, 58]
	adrp	x0, .LC135
	add	x0, x0, :lo12:.LC135
	bl	printf
.L2507:
	mov	w0, -1
	str	w0, [x20, 52]
	b	.L2415
.L2437:
	add	x21, x19, :lo12:.LANCHOR55
	mov	w0, 13
	add	x21, x21, x20, lsl 6
	strb	w0, [x21, 58]
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 156]
	mov	w0, 20041
	str	wzr, [x21, 52]
	movk	w0, 0x444b, lsl 16
	cmp	w1, w0
	bne	.L2449
	ldrh	w0, [x21, 50]
	cbnz	w0, .L2449
	adrp	x0, .LANCHOR31
	mov	w5, 1
	adrp	x22, .LANCHOR173
	ldr	w1, [x21, 40]
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	ldr	x3, [x22, #:lo12:.LANCHOR173]
	sub	w0, w0, w2
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR68
	sub	w5, w5, #1
	ldrb	w4, [x2, #:lo12:.LANCHOR68]
	adrp	x2, .LANCHOR174
	lsl	w6, w5, w0
	ldr	x2, [x2, #:lo12:.LANCHOR174]
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2438
	ldr	x1, [x22, #:lo12:.LANCHOR173]
	ldr	x2, [x21, 24]
	ldr	w1, [x1]
	ldr	w2, [x2]
	cmp	w2, w1
	beq	.L2449
.L2438:
	add	x19, x19, :lo12:.LANCHOR55
	adrp	x1, .LANCHOR51
	add	x20, x19, x20, lsl 6
	mov	w3, w0
	ldrb	w4, [x1, #:lo12:.LANCHOR51]
	adrp	x0, .LC136
	add	x0, x0, :lo12:.LC136
	ldrb	w1, [x20, 1]
	ldr	w2, [x20, 40]
	bl	printf
	mov	w0, -1
	str	w0, [x20, 52]
	b	.L2449
.L2424:
	cmp	w2, 11
	mov	w1, 3
	mov	w5, 10
	csel	w5, w5, w1, eq
	adrp	x1, .LANCHOR31
	mov	w4, 24
	mov	w2, 1
	add	x22, x19, :lo12:.LANCHOR55
	ldrb	w3, [x1, #:lo12:.LANCHOR31]
	ubfiz	x0, x0, 6, 8
	add	x0, x22, x0
	mov	x24, x1
	sub	w4, w4, w3
	lsl	w2, w2, w3
	sub	w2, w2, #1
	lsr	w3, w21, w4
	and	w3, w3, w2
	and	w3, w3, 65535
.L2440:
	ldrb	w1, [x0]
	cmp	w1, 255
	bne	.L2447
	mov	w21, -1
	b	.L2415
.L2447:
	sxtw	x23, w1
	ubfiz	x0, x1, 6, 8
	add	x1, x22, x23, lsl 6
	add	x0, x22, x0
	ldrb	w6, [x1, 58]
	cmp	w6, w5
	bne	.L2440
	ldr	w1, [x1, 40]
	lsr	w1, w1, w4
	and	w1, w1, w2
	cmp	w3, w1
	bne	.L2440
	mov	w0, w21
	mov	w1, 64
	bl	flash_wait_device_ready
	mov	w21, w0
	tbnz	x21, 6, .L2442
.L2506:
	mov	w21, 0
	b	.L2443
.L2442:
	tst	x21, 15
	beq	.L2444
	add	x22, x22, x20, lsl 6
	mov	w2, w0
	mov	w4, 12
	adrp	x0, .LC137
	add	x0, x0, :lo12:.LC137
	ldrb	w1, [x22, 1]
	ldr	w3, [x22, 40]
	bl	printf
	mov	w0, 12
	strb	w0, [x22, 58]
	mov	w0, -1
	str	w0, [x22, 52]
.L2443:
	add	x1, x19, :lo12:.LANCHOR55
	add	x20, x1, x20, lsl 6
	add	x1, x1, x23, lsl 6
	ldrb	w0, [x20, 58]
	strb	w0, [x1, 58]
	ldr	w0, [x20, 52]
	str	w0, [x1, 52]
.L2415:
	mov	w0, w21
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L2444:
	add	x21, x22, x20, lsl 6
	mov	w0, 13
	strb	w0, [x21, 58]
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 156]
	mov	w0, 20041
	str	wzr, [x21, 52]
	movk	w0, 0x444b, lsl 16
	cmp	w1, w0
	bne	.L2506
	ldrh	w0, [x21, 50]
	cbnz	w0, .L2506
	ldrb	w2, [x24, #:lo12:.LANCHOR31]
	mov	w5, 1
	mov	w0, 24
	adrp	x22, .LANCHOR173
	sub	w0, w0, w2
	ldr	w1, [x21, 40]
	lsl	w5, w5, w2
	adrp	x2, .LANCHOR68
	sub	w5, w5, #1
	ldr	x3, [x22, #:lo12:.LANCHOR173]
	ldrb	w4, [x2, #:lo12:.LANCHOR68]
	adrp	x2, .LANCHOR174
	lsl	w6, w5, w0
	ldr	x2, [x2, #:lo12:.LANCHOR174]
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2446
	ldr	x1, [x22, #:lo12:.LANCHOR173]
	ldr	x2, [x21, 24]
	ldr	w1, [x1]
	ldr	w2, [x2]
	cmp	w2, w1
	beq	.L2506
.L2446:
	add	x21, x19, :lo12:.LANCHOR55
	adrp	x1, .LANCHOR51
	add	x21, x21, x20, lsl 6
	mov	w3, w0
	ldrb	w4, [x1, #:lo12:.LANCHOR51]
	adrp	x0, .LC138
	add	x0, x0, :lo12:.LC138
	ldrb	w1, [x21, 1]
	ldr	w2, [x21, 40]
	bl	printf
	mov	w0, -1
	str	w0, [x21, 52]
	b	.L2506
.L2422:
	mov	w0, w21
	mov	w1, 32
	bl	flash_wait_device_ready
	mov	w21, w0
	tbz	x21, 5, .L2449
	add	x19, x19, :lo12:.LANCHOR55
	tst	x21, 15
	add	x20, x19, x20, lsl 6
	beq	.L2448
	mov	w0, 12
	strb	w0, [x20, 58]
	b	.L2507
.L2448:
	mov	w0, 13
	str	wzr, [x20, 52]
	strb	w0, [x20, 58]
	b	.L2449
.L2423:
	mov	w1, 64
	mov	w0, w21
	bl	flash_wait_device_ready
	tbz	x0, 6, .L2449
	add	x19, x19, :lo12:.LANCHOR55
	add	x19, x19, x20, lsl 6
	str	w0, [x19, 52]
	mov	w0, 7
	strb	w0, [x19, 58]
	b	.L2449
	.size	queue_wait_first_req_completed, .-queue_wait_first_req_completed
	.section	.text.sblk_prog_page,"ax",@progbits
	.align	2
	.global	sblk_prog_page
	.type	sblk_prog_page, %function
sblk_prog_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldrh	w0, [x0, 50]
	and	w20, w1, 255
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	cbz	w0, .L2509
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L2509
	ldr	w1, [x19, 40]
	adrp	x0, .LC139
	mov	w2, w20
	add	x0, x0, :lo12:.LC139
	bl	printf
.L2509:
	adrp	x23, .LANCHOR44
	adrp	x25, .LANCHOR31
	add	x23, x23, :lo12:.LANCHOR44
	add	x26, x25, :lo12:.LANCHOR31
	mov	w21, 0
.L2510:
	cbnz	w20, .L2521
.L2537:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2521:
	ldrb	w24, [x19]
	ldr	w22, [x19, 40]
.L2511:
	mov	w1, 1
	mov	w0, w22
	bl	queue_lun_state
	cbnz	w0, .L2512
	cmp	w20, 1
	beq	.L2513
	ldrb	w0, [x23]
	cbz	w0, .L2513
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbz	w0, .L2514
.L2513:
	mov	x0, x19
	bl	queue_prog_cmd
.L2515:
	subs	w20, w20, #1
	beq	.L2537
	ubfiz	x24, x24, 6, 8
	adrp	x19, .LANCHOR55
	add	x19, x19, :lo12:.LANCHOR55
	add	x19, x19, x24
	b	.L2510
.L2512:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2511
.L2514:
	ldrb	w1, [x25, #:lo12:.LANCHOR31]
	mov	w27, 24
	mov	w0, 1
	sub	w27, w27, w1
	lsl	w0, w0, w1
	sub	w0, w0, #1
	lsr	w27, w22, w27
	and	w27, w27, w0
	ldrb	w0, [x19]
	and	w27, w27, 65535
	cmp	w0, 255
	bne	.L2516
	adrp	x1, .LANCHOR182
	adrp	x0, .LC0
	mov	w2, 697
	add	x1, x1, :lo12:.LANCHOR182
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2516:
	ldrb	w0, [x19]
	adrp	x1, .LANCHOR55
	add	x1, x1, :lo12:.LANCHOR55
	mov	w3, 24
	mov	w28, 1
	add	x0, x1, x0, lsl 6
	ldr	w4, [x0, 40]
	ldrb	w0, [x26]
	sub	w3, w3, w0
	lsl	w0, w28, w0
	sub	w0, w0, #1
	lsr	w1, w4, w3
	and	w0, w0, w1
	cmp	w27, w0, uxth
	bne	.L2517
	adrp	x0, .LANCHOR80
	ldrh	w2, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR81
	ldrb	w1, [x0, #:lo12:.LANCHOR81]
	sub	w0, w3, w2
	lsr	w5, w22, w2
	sub	w3, w1, #1
	lsl	w0, w28, w0
	sub	w0, w0, #1
	lsl	w1, w28, w2
	and	w0, w0, w3
	sub	w1, w1, #1
	and	w0, w0, 65535
	and	w1, w1, 65535
	and	w5, w0, w5
	lsr	w2, w4, w2
	and	w0, w0, w2
	and	w22, w1, w22
	cmp	w5, w0
	and	w1, w1, w4
	ccmp	w22, w1, 0, ne
	bne	.L2517
	cmp	w21, w3
	beq	.L2517
	ldr	w1, [x19, 40]
	mov	w0, 17
	ldr	x2, [x19, 8]
	add	w21, w21, w28
	ldr	x3, [x19, 24]
	bl	flash_start_page_prog
	strb	w28, [x19, 59]
	mov	w0, 9
	strb	w0, [x19, 58]
	mov	w0, -1
	strb	w0, [x19]
	mov	x1, x19
	adrp	x0, .LANCHOR59
	add	x0, x0, :lo12:.LANCHOR59
	bl	buf_add_tail
	b	.L2515
.L2517:
	mov	x0, x19
	mov	w21, 0
	bl	queue_prog_cmd
	b	.L2515
	.size	sblk_prog_page, .-sblk_prog_page
	.section	.text.sblk_wait_write_queue_completed,"ax",@progbits
	.align	2
	.global	sblk_wait_write_queue_completed
	.type	sblk_wait_write_queue_completed, %function
sblk_wait_write_queue_completed:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	adrp	x19, .LANCHOR59
	add	x19, x19, :lo12:.LANCHOR59
.L2540:
	ldrb	w0, [x19]
	cmp	w0, 255
	bne	.L2541
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L2541:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2540
	.size	sblk_wait_write_queue_completed, .-sblk_wait_write_queue_completed
	.section	.text.ftl_flush,"ax",@progbits
	.align	2
	.global	ftl_flush
	.type	ftl_flush, %function
ftl_flush:
	stp	x29, x30, [sp, -32]!
	adrp	x0, .LANCHOR183
	add	x29, sp, 0
	ldrb	w1, [x0, #:lo12:.LANCHOR183]
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	adrp	x20, .LANCHOR184
	cbz	w1, .L2544
	ldrb	w2, [x20, #:lo12:.LANCHOR184]
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
	add	x0, x0, x2, lsl 6
	bl	sblk_prog_page
.L2544:
	mov	w0, -1
	strb	wzr, [x19, #:lo12:.LANCHOR183]
	strb	w0, [x20, #:lo12:.LANCHOR184]
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	ldp	x19, x20, [sp, 16]
	mov	w0, -1
	ldp	x29, x30, [sp], 32
	b	ftl_vpn_decrement
	.size	ftl_flush, .-ftl_flush
	.section	.text.ftl_read_page,"ax",@progbits
	.align	2
	.global	ftl_read_page
	.type	ftl_read_page, %function
ftl_read_page:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w20, w1
	mov	x21, x2
	mov	x22, x3
	str	x23, [sp, 48]
	mov	w23, w4
	bl	sblk_wait_write_queue_completed
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	mov	w0, w19
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	b	flash_read_page_en
	.size	ftl_read_page, .-ftl_read_page
	.section	.text.ftl_read_ppa_page,"ax",@progbits
	.align	2
	.global	ftl_read_ppa_page
	.type	ftl_read_ppa_page, %function
ftl_read_ppa_page:
	stp	x29, x30, [sp, -64]!
	mov	w5, 1
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w20, w0
	adrp	x0, .LANCHOR31
	mov	w19, 24
	stp	x21, x22, [sp, 32]
	mov	x21, x1
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	mov	x22, x2
	str	x23, [sp, 48]
	mov	w23, w3
	sub	w19, w19, w0
	lsl	w5, w5, w0
	sub	w5, w5, #1
	lsr	w19, w20, w19
	and	w19, w19, w5
	and	w19, w19, 255
	bl	sblk_wait_write_queue_completed
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	mov	w0, w19
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	b	flash_read_page_en
	.size	ftl_read_ppa_page, .-ftl_read_ppa_page
	.section	.text.sblk_read_page,"ax",@progbits
	.align	2
	.global	sblk_read_page
	.type	sblk_read_page, %function
sblk_read_page:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w22, w1, 255
	stp	x27, x28, [sp, 80]
	mov	w21, w22
	stp	x19, x20, [sp, 16]
	adrp	x27, .LANCHOR31
	stp	x23, x24, [sp, 48]
	mov	x19, x0
	stp	x25, x26, [sp, 64]
	mov	x23, x0
	adrp	x25, .LANCHOR185
	add	x28, x27, :lo12:.LANCHOR31
	add	x25, x25, :lo12:.LANCHOR185
.L2554:
	cbnz	w21, .L2564
.L2577:
	adrp	x19, .LANCHOR55
	add	x19, x19, :lo12:.LANCHOR55
.L2565:
	cbnz	w22, .L2567
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2564:
	ldrb	w24, [x19]
	ldr	w26, [x19, 40]
.L2555:
	mov	w1, 0
	mov	w0, w26
	bl	queue_lun_state
	cbnz	w0, .L2556
	cmp	w21, 1
	beq	.L2561
	ldrb	w0, [x25]
	cbnz	w0, .L2558
.L2561:
	mov	x0, x19
	bl	queue_read_cmd
	b	.L2559
.L2556:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2555
.L2558:
	ldrb	w1, [x27, #:lo12:.LANCHOR31]
	mov	w20, 24
	mov	w0, 1
	sub	w20, w20, w1
	lsl	w0, w0, w1
	sub	w0, w0, #1
	lsr	w20, w26, w20
	and	w20, w20, w0
	ldrb	w0, [x19]
	and	w20, w20, 65535
	cmp	w0, 255
	bne	.L2560
	adrp	x1, .LANCHOR186
	adrp	x0, .LC0
	mov	w2, 782
	add	x1, x1, :lo12:.LANCHOR186
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2560:
	ldrb	w4, [x19]
	adrp	x2, .LANCHOR55
	add	x2, x2, :lo12:.LANCHOR55
	ldrb	w7, [x28]
	mov	w0, 24
	mov	w3, 1
	sbfiz	x5, x4, 6, 32
	sub	w0, w0, w7
	add	x6, x2, x5
	lsl	w3, w3, w7
	sub	w3, w3, #1
	ldr	w1, [x6, 40]
	lsr	w0, w1, w0
	and	w0, w0, w3
	cmp	w20, w0, uxth
	bne	.L2561
	adrp	x0, .LANCHOR117
	ldrh	w0, [x0, #:lo12:.LANCHOR117]
	add	w26, w0, w26
	cmp	w1, w26
	bne	.L2561
	ldr	w0, [x19, 40]
	mov	w26, -1
	ldrb	w24, [x2, x5]
	adrp	x20, .LANCHOR59
	stp	x6, x5, [x29, 96]
	add	x20, x20, :lo12:.LANCHOR59
	str	x2, [x29, 112]
	sub	w21, w21, #1
	str	w4, [x29, 120]
	bl	flash_start_plane_read
	mov	w3, 2
	strb	wzr, [x19, 59]
	strb	w3, [x19, 58]
	mov	x1, x19
	strb	w26, [x19]
	mov	x0, x20
	str	w3, [x29, 124]
	bl	buf_add_tail
	ldp	x6, x5, [x29, 96]
	strb	wzr, [x6, 59]
	ldr	x2, [x29, 112]
	mov	x0, x20
	ldp	w4, w3, [x29, 120]
	strb	w3, [x6, 58]
	strb	w26, [x2, x5]
	ubfiz	x1, x4, 6, 8
	add	x1, x2, x1
	bl	buf_add_tail
.L2559:
	subs	w21, w21, #1
	beq	.L2577
	ubfiz	x24, x24, 6, 8
	adrp	x19, .LANCHOR55
	add	x19, x19, :lo12:.LANCHOR55
	add	x19, x19, x24
	b	.L2554
.L2567:
	ldrb	w0, [x23, 58]
	cmp	w0, 13
	bne	.L2566
	ldrb	w0, [x23]
	sub	w22, w22, #1
	cmp	w0, 255
	beq	.L2566
	ubfiz	x23, x0, 6, 8
	add	x23, x19, x23
.L2566:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2565
	.size	sblk_read_page, .-sblk_read_page
	.section	.text.gc_check_data_one_wl,"ax",@progbits
	.align	2
	.global	gc_check_data_one_wl
	.type	gc_check_data_one_wl, %function
gc_check_data_one_wl:
	sub	sp, sp, #112
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	adrp	x19, .LANCHOR76
	stp	x21, x22, [sp, 48]
	add	x22, x19, :lo12:.LANCHOR76
	adrp	x20, .LANCHOR12
	stp	x23, x24, [sp, 64]
	stp	x25, x26, [sp, 80]
	ldr	x0, [x22, 8]
	stp	x27, x28, [sp, 96]
	ldr	x21, [x20, #:lo12:.LANCHOR12]
	cbnz	x0, .L2580
	mov	w0, 1
	bl	buf_alloc
	str	x0, [x22, 8]
.L2580:
	add	x0, x19, :lo12:.LANCHOR76
	ldr	x22, [x0, 8]
	cbnz	x22, .L2581
	adrp	x1, .LANCHOR187
	adrp	x0, .LC0
	mov	w2, 729
	add	x1, x1, :lo12:.LANCHOR187
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2581:
	adrp	x27, .LANCHOR117
	adrp	x28, .LANCHOR84
	add	x26, x21, 96
	add	x27, x27, :lo12:.LANCHOR117
	add	x28, x28, :lo12:.LANCHOR84
	mov	w25, 0
.L2582:
	ldrb	w0, [x21, 89]
	cmp	w25, w0
	bge	.L2593
	mov	w24, 1
	add	x23, x19, :lo12:.LANCHOR76
	b	.L2594
.L2592:
	ldrh	w0, [x26]
	ldrh	w2, [x27]
	ldrb	w1, [x28]
	cmp	w1, 2
	mul	w2, w0, w2
	beq	.L2583
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbz	w0, .L2584
.L2583:
	ldrh	w0, [x23, 16]
	sub	w3, w0, #1
	add	w0, w24, w2
	add	w0, w3, w0
	orr	w1, w0, w1, lsl 24
	str	w1, [x22, 40]
.L2585:
	mov	w1, 1
	mov	x0, x22
	bl	sblk_read_page
	ldr	w2, [x22, 52]
	adrp	x1, .LANCHOR160
	cmn	w2, #1
	beq	.L2588
	ldrh	w0, [x23, 22]
	ldr	x4, [x1, #:lo12:.LANCHOR160]
	ldr	x3, [x22, 24]
	lsl	x0, x0, 2
	ldr	w5, [x4, x0]
	ldr	w4, [x3, 4]
	cmp	w5, w4
	bne	.L2588
	adrp	x4, .LANCHOR161
	ldr	x4, [x4, #:lo12:.LANCHOR161]
	ldr	w4, [x4, x0]
	ldr	w0, [x3, 8]
	cmp	w4, w0
	beq	.L2589
.L2588:
	ldrh	w0, [x23, 22]
	ldr	x1, [x1, #:lo12:.LANCHOR160]
	lsl	x0, x0, 2
	ldr	w3, [x1, x0]
	cmn	w3, #1
	beq	.L2589
	adrp	x1, .LANCHOR19
	ldr	w1, [x1, #:lo12:.LANCHOR19]
	tbz	x1, 10, .L2590
	ldr	x1, [x22, 24]
	adrp	x4, .LANCHOR161
	ldr	x4, [x4, #:lo12:.LANCHOR161]
	ldr	w5, [x1, 12]
	str	w5, [sp]
	ldr	w4, [x4, x0]
	adrp	x0, .LC140
	ldp	w5, w6, [x1]
	add	x0, x0, :lo12:.LC140
	ldr	w7, [x1, 8]
	ldr	w1, [x22, 40]
	bl	printf
.L2590:
	adrp	x0, .LANCHOR130
	ldrh	w1, [x21, 80]
	ldrb	w2, [x0, #:lo12:.LANCHOR130]
	adrp	x0, .LANCHOR11
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x1, lsl 1]
	ldr	x1, [x20, #:lo12:.LANCHOR12]
	ldr	w0, [x1, 556]
	add	w0, w0, 1
	str	w0, [x1, 556]
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 156]
	mov	w0, 20041
	movk	w0, 0x444b, lsl 16
	cmp	w1, w0
	bne	.L2597
	cbnz	w2, .L2597
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbnz	w0, .L2597
	ldr	w0, [x22, 40]
	bl	ftl_mask_bad_block
.L2597:
	mov	w0, -1
.L2579:
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 112
	ret
.L2584:
	cmp	w1, 3
	ldrh	w0, [x23, 16]
	bne	.L2586
	adrp	x1, .LANCHOR36
	ldrb	w1, [x1, #:lo12:.LANCHOR36]
	cbz	w1, .L2587
	add	w0, w0, w0, lsl 1
	sub	w1, w0, #1
	add	w0, w24, w2
	add	w0, w1, w0
	orr	w0, w0, 50331648
.L2612:
	str	w0, [x22, 40]
	b	.L2585
.L2587:
	add	w0, w0, w2
	orr	w0, w0, w24, lsl 24
	b	.L2612
.L2586:
	add	w0, w0, w2
	b	.L2612
.L2589:
	ldrh	w0, [x23, 22]
	add	w24, w24, 1
	add	w0, w0, 1
	strh	w0, [x23, 22]
.L2594:
	ldrh	w0, [x23, 20]
	cmp	w24, w0
	ble	.L2592
	add	w25, w25, 1
	add	x26, x26, 2
	b	.L2582
.L2593:
	add	x19, x19, :lo12:.LANCHOR76
	ldrh	w0, [x19, 16]
	add	w1, w0, 1
	strh	w1, [x19, 16]
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbz	w1, .L2598
	add	w0, w0, 2
	strh	w0, [x19, 16]
.L2598:
.L2591:
	mov	w0, 0
	b	.L2579
	.size	gc_check_data_one_wl, .-gc_check_data_one_wl
	.section	.text.sblk_tlc_prog_one_page,"ax",@progbits
	.align	2
	.global	sblk_tlc_prog_one_page
	.type	sblk_tlc_prog_one_page, %function
sblk_tlc_prog_one_page:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	x0, [x0]
	ldr	w20, [x0, 40]
.L2614:
	mov	w1, 1
	mov	w0, w20
	bl	queue_lun_state
	cbnz	w0, .L2615
	mov	x0, x19
	mov	w1, 1
	bl	queue_tlc_prog_cmd
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
.L2615:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2614
	.size	sblk_tlc_prog_one_page, .-sblk_tlc_prog_one_page
	.section	.text.sblk_xlc_prog_pages,"ax",@progbits
	.align	2
	.global	sblk_xlc_prog_pages
	.type	sblk_xlc_prog_pages, %function
sblk_xlc_prog_pages:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	ldr	x0, [x0]
	stp	x21, x22, [sp, 32]
	mov	x22, x1
	stp	x23, x24, [sp, 48]
	mov	w24, w2
	ldr	w19, [x0, 40]
	str	x25, [sp, 64]
.L2618:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2619
	cmp	w24, 2
	bne	.L2620
	adrp	x0, .LANCHOR44
	ldr	x3, [x22]
	ldrb	w0, [x0, #:lo12:.LANCHOR44]
	cbz	w0, .L2621
	adrp	x0, .LANCHOR31
	ldr	x7, [x20]
	mov	w25, 1
	mov	w2, 24
	ldrb	w0, [x0, #:lo12:.LANCHOR31]
	ldr	w3, [x3, 40]
	sub	w2, w2, w0
	ldr	w1, [x7, 40]
	lsl	w19, w25, w0
	adrp	x0, .LANCHOR36
	lsl	w21, w25, w2
	sub	w19, w19, #1
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	sub	w21, w21, #1
	and	w23, w1, w21
	lsr	w1, w1, w2
	and	w19, w19, w1
	and	w21, w21, w3
	and	w19, w19, 255
	cbz	w0, .L2622
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x20]
	mov	w4, w23
	mov	w3, w19
	mov	w1, w25
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22]
	mov	w4, w21
	mov	w3, w19
	mov	w1, w25
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x20, 8]
	add	w4, w23, w25
	mov	w3, w19
	mov	w1, w24
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 8]
	add	w4, w21, w25
	mov	w3, w19
	mov	w1, w24
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x20, 16]
	add	w4, w23, 2
	mov	w3, w19
	mov	w2, 17
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 16]
	add	w4, w21, 2
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	mov	w0, 0
	bl	flash_start_one_pass_page_prog
.L2623:
	ldr	x1, [x20]
	mov	w0, 5
	strb	w0, [x1, 58]
	mov	w0, 1
	strb	w0, [x1, 59]
	mov	w0, -1
	strb	w0, [x1]
	adrp	x0, .LANCHOR59
	add	x0, x0, :lo12:.LANCHOR59
	bl	buf_add_tail
.L2624:
	mov	w0, 0
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L2619:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2618
.L2622:
	ldr	x5, [x7, 8]
	mov	w4, w23
	ldr	x6, [x7, 24]
	mov	w3, w19
	ldrb	w0, [x7, 60]
	mov	w1, w25
	mov	w2, 17
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w21
	ldr	x0, [x22]
	mov	w3, w19
	mov	w1, w25
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldp	x7, x0, [x20]
	mov	w4, w23
	mov	w3, w19
	mov	w1, w24
	mov	w2, 17
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w21
	ldr	x0, [x22, 8]
	mov	w3, w19
	mov	w1, w24
	mov	w2, 26
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x7, [x20]
	mov	w4, w23
	ldr	x0, [x20, 16]
	mov	w3, w19
	mov	w2, 17
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x22, 16]
	mov	w4, w21
	ldr	x7, [x20]
	mov	w3, w19
	mov	w2, 16
	mov	w1, 3
	ldr	x5, [x0, 8]
	ldr	x6, [x0, 24]
	ldrb	w0, [x7, 60]
	bl	flash_start_tlc_page_prog
	b	.L2623
.L2621:
	ldr	w19, [x3, 40]
.L2625:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2626
	mov	w1, 1
	mov	x0, x20
	bl	queue_tlc_prog_cmd
	mov	w1, 0
	mov	x0, x22
	bl	queue_tlc_prog_cmd
.L2627:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbz	w0, .L2624
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2627
.L2626:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2625
.L2620:
	mov	w1, 1
	mov	x0, x20
	bl	queue_tlc_prog_cmd
	b	.L2624
	.size	sblk_xlc_prog_pages, .-sblk_xlc_prog_pages
	.section	.text.sblk_3d_mlc_prog_pages,"ax",@progbits
	.align	2
	.global	sblk_3d_mlc_prog_pages
	.type	sblk_3d_mlc_prog_pages, %function
sblk_3d_mlc_prog_pages:
	stp	x29, x30, [sp, -80]!
	ubfiz	x1, x1, 4, 32
	add	x1, x1, 8
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	add	x21, x0, x1
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR31
	adrp	x24, .LANCHOR59
	str	x25, [sp, 64]
	add	x23, x23, :lo12:.LANCHOR31
	add	x24, x24, :lo12:.LANCHOR59
	add	x25, x0, 8
	stp	x19, x20, [sp, 16]
	mov	w22, 1
.L2631:
	cmp	x21, x25
	bne	.L2634
	mov	w0, 0
	ldr	x25, [sp, 64]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L2634:
	ldr	x0, [x25, -8]
	ldr	w19, [x0, 40]
.L2632:
	mov	w1, 1
	mov	w0, w19
	bl	queue_lun_state
	cbnz	w0, .L2633
	ldr	x0, [x25, -8]
	mov	w2, 24
	ldrb	w1, [x23]
	add	x25, x25, 16
	sub	w2, w2, w1
	ldr	w0, [x0, 40]
	lsl	w19, w22, w1
	lsl	w20, w22, w2
	sub	w19, w19, #1
	sub	w20, w20, #1
	and	w20, w20, w0
	lsr	w0, w0, w2
	and	w19, w19, w0
	and	w19, w19, 255
	mov	w0, w19
	bl	zftl_flash_exit_slc_mode
	ldr	x0, [x25, -24]
	mov	w2, w20
	mov	w1, w19
	ldr	x3, [x0, 8]
	ldr	x4, [x0, 24]
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_wait_flash_ready
	ldr	x0, [x25, -16]
	add	w2, w20, 1
	mov	w1, w19
	ldr	x3, [x0, 8]
	ldr	x4, [x0, 24]
	mov	w0, 16
	bl	flash_start_3d_mlc_page_prog
	bl	nandc_de_cs.constprop.31
	ldr	x1, [x25, -24]
	mov	w0, 4
	strb	w22, [x1, 59]
	strb	w0, [x1, 58]
	mov	w0, -1
	strb	w0, [x1]
	mov	x0, x24
	bl	buf_add_tail
	b	.L2631
.L2633:
	bl	queue_wait_first_req_completed
	bl	queue_remove_completed_req
	b	.L2632
	.size	sblk_3d_mlc_prog_pages, .-sblk_3d_mlc_prog_pages
	.section	.text.flash_prog_page_en,"ax",@progbits
	.align	2
	.global	flash_prog_page_en
	.type	flash_prog_page_en, %function
flash_prog_page_en:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	and	w21, w0, 255
	and	w0, w5, 255
	stp	x19, x20, [sp, 16]
	str	w0, [x29, 124]
	adrp	x0, .LANCHOR23
	stp	x23, x24, [sp, 48]
	mov	w20, w1
	stp	x27, x28, [sp, 80]
	mov	x23, x2
	ldrb	w1, [x0, #:lo12:.LANCHOR23]
	mov	x22, x3
	stp	x25, x26, [sp, 64]
	mov	w28, w4
	ubfx	x24, x20, 24, 2
	cmp	w1, w21
	mov	x19, x0
	bhi	.L2637
	adrp	x1, .LANCHOR188
	adrp	x0, .LC0
	mov	w2, 642
	add	x1, x1, :lo12:.LANCHOR188
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2637:
	ldrb	w0, [x19, #:lo12:.LANCHOR23]
	cmp	w0, w21
	bls	.L2648
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	ldrb	w27, [x0, w21, sxtw]
	cbnz	w24, .L2650
	adrp	x0, .LANCHOR0
	ldrb	w1, [x0, #:lo12:.LANCHOR0]
	adrp	x0, .LANCHOR1
	cbz	w1, .L2640
	ldrb	w1, [x0, #:lo12:.LANCHOR1]
	cbz	w1, .L2650
.L2640:
	adrp	x1, .LANCHOR2
	ldrb	w0, [x0, #:lo12:.LANCHOR1]
	ldrh	w1, [x1, #:lo12:.LANCHOR2]
	udiv	w19, w20, w1
	mul	w19, w19, w1
	sub	w1, w20, w19
	cbz	w0, .L2641
	add	w19, w19, w1, lsl 1
.L2639:
	adrp	x24, .LANCHOR19
	adrp	x25, .LC141
	add	x24, x24, :lo12:.LANCHOR19
	add	x25, x25, :lo12:.LC141
	adrp	x26, .LANCHOR173
.L2645:
	ldr	w0, [x24]
	tbz	x0, 4, .L2642
	mov	w3, w19
	mov	w2, w20
	mov	w1, w27
	mov	x0, x25
	bl	printf
.L2642:
	mov	w4, w28
	mov	x3, x22
	mov	x2, x23
	mov	w1, w19
	mov	w0, w27
	bl	flash_prog_page
	mov	w5, w0
	ldr	w0, [x29, 124]
	cbz	w0, .L2643
	adrp	x6, .LANCHOR174
	ldr	x3, [x26, #:lo12:.LANCHOR173]
	mov	w4, w28
	str	x6, [x29, 112]
	ldr	x2, [x6, #:lo12:.LANCHOR174]
	mov	w1, w20
	mov	w0, w21
	str	w5, [x29, 104]
	bl	flash_read_page_en
	cmp	w0, 512
	ldr	x6, [x29, 112]
	mov	w4, w0
	ccmn	w0, #1, 4, ne
	mov	x7, x6
	beq	.L2644
	ldr	x0, [x6, #:lo12:.LANCHOR174]
	ldr	w1, [x23]
	ldr	w5, [x29, 104]
	ldr	w0, [x0]
	cmp	w1, w0
	bne	.L2644
	ldr	x0, [x26, #:lo12:.LANCHOR173]
	ldr	w1, [x22]
	ldr	w0, [x0]
	cmp	w1, w0
	beq	.L2643
.L2644:
	str	w4, [x29, 112]
	mov	w3, 4
	str	x7, [x29, 104]
	mov	w2, w3
	mov	x1, x23
	adrp	x0, .LC142
	add	x0, x0, :lo12:.LC142
	bl	rknand_print_hex
	mov	w3, 4
	mov	x1, x22
	mov	w2, w3
	adrp	x0, .LC143
	add	x0, x0, :lo12:.LC143
	bl	rknand_print_hex
	adrp	x0, .LANCHOR173
	mov	w3, 4
	mov	w2, w3
	ldr	x1, [x0, #:lo12:.LANCHOR173]
	adrp	x0, .LC144
	add	x0, x0, :lo12:.LC144
	bl	rknand_print_hex
	ldr	x7, [x29, 104]
	mov	w3, 4
	adrp	x0, .LC145
	mov	w2, w3
	add	x0, x0, :lo12:.LC145
	ldr	x1, [x7, #:lo12:.LANCHOR174]
	bl	rknand_print_hex
	ldr	w4, [x29, 112]
	cmp	w4, 512
	beq	.L2645
.L2647:
	mov	w1, w20
	adrp	x0, .LC146
	add	x0, x0, :lo12:.LC146
	bl	printf
	adrp	x1, .LANCHOR188
	adrp	x0, .LC0
	mov	w2, 685
	add	x1, x1, :lo12:.LANCHOR188
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2648:
	mov	w0, -1
	b	.L2636
.L2641:
	adrp	x0, .LANCHOR3
	add	x0, x0, :lo12:.LANCHOR3
	ldrh	w0, [x0, w1, uxtw 1]
	add	w19, w0, w19
	b	.L2639
.L2650:
	mov	w19, w20
	b	.L2639
.L2643:
	mov	w0, w5
	cmn	w5, #1
	beq	.L2647
.L2636:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
	.size	flash_prog_page_en, .-flash_prog_page_en
	.section	.text.ftl_test_block,"ax",@progbits
	.align	2
	.global	ftl_test_block
	.type	ftl_test_block, %function
ftl_test_block:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	adrp	x24, .LANCHOR189
	stp	x21, x22, [sp, 32]
	and	w21, w0, 65535
	ldr	x0, [x24, #:lo12:.LANCHOR189]
	mov	w23, 0
	stp	x25, x26, [sp, 64]
	adrp	x25, .LANCHOR190
	stp	x19, x20, [sp, 16]
	adrp	x26, .LANCHOR118
	stp	x27, x28, [sp, 80]
	mov	w20, 0
	str	wzr, [x0]
	add	x0, x26, :lo12:.LANCHOR118
	adrp	x27, .LANCHOR81
	str	x0, [x29, 112]
	str	wzr, [x25, #:lo12:.LANCHOR190]
	add	x0, x27, :lo12:.LANCHOR81
	str	x0, [x29, 96]
.L2667:
	ldr	x0, [x29, 112]
	ldrb	w0, [x0]
	cmp	w0, w20
	bls	.L2677
	add	x0, x27, :lo12:.LANCHOR81
	mov	w22, 0
	str	x0, [x29, 120]
	adrp	x0, .LANCHOR19
	add	x0, x0, :lo12:.LANCHOR19
	str	x0, [x29, 104]
	b	.L2678
.L2676:
	ldr	x0, [x29, 104]
	ldr	w0, [x0]
	tbz	x0, 12, .L2668
	adrp	x0, .LC147
	mov	w1, w21
	add	x0, x0, :lo12:.LC147
	bl	printf
.L2668:
	ldr	x0, [x29, 96]
	ldrb	w19, [x0]
	madd	w19, w21, w19, w22
	and	w19, w19, 65535
	cbnz	w20, .L2669
	adrp	x0, .LANCHOR6
	ldr	x0, [x0, #:lo12:.LANCHOR6]
	ldrb	w0, [x0, 47]
	cmp	w0, w19
	bcs	.L2670
.L2669:
	and	w28, w20, 255
	mov	w1, w19
	mov	w0, w28
	bl	flash_check_bad_block
	cbnz	w0, .L2670
	adrp	x0, .LANCHOR117
	mov	w1, w23
	ldrh	w7, [x0, #:lo12:.LANCHOR117]
	mov	w0, w28
	mul	w26, w7, w19
	mov	w2, w26
	bl	flash_erase_block_en
	cbz	w0, .L2671
	adrp	x0, .LANCHOR84
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	cmp	w0, 2
	bne	.L2693
	adrp	x0, .LANCHOR0
	ldrb	w0, [x0, #:lo12:.LANCHOR0]
	cbz	w0, .L2693
	mov	w2, w26
	mov	w1, 1
	mov	w0, w28
	bl	flash_erase_block_en
	cbnz	w0, .L2693
.L2675:
	adrp	x0, .LANCHOR84
	mov	w23, 1
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	add	w26, w26, w0, lsl 24
.L2674:
	adrp	x0, .LANCHOR68
	ldr	x2, [x24, #:lo12:.LANCHOR189]
	mov	w5, 1
	add	x3, x25, :lo12:.LANCHOR190
	ldrb	w4, [x0, #:lo12:.LANCHOR68]
	mov	w1, w26
	mov	w0, w28
	bl	flash_prog_page_en
	cbz	w0, .L2670
.L2693:
	mov	w1, w19
	mov	w0, w28
	bl	flash_mask_bad_block
.L2670:
	add	w22, w22, 1
	and	w22, w22, 65535
.L2678:
	ldr	x0, [x29, 120]
	ldrb	w0, [x0]
	cmp	w0, w22
	bhi	.L2676
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L2667
.L2671:
	cbz	w23, .L2674
	b	.L2675
.L2677:
	cbz	w23, .L2679
	adrp	x0, .LANCHOR9
	mov	w1, 2
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x21, x0, x21, uxth 2
	ldrb	w0, [x21, 2]
	bfi	w0, w1, 3, 2
	strb	w0, [x21, 2]
.L2679:
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
	.size	ftl_test_block, .-ftl_test_block
	.section	.text.ftl_prog_page,"ax",@progbits
	.align	2
	.global	ftl_prog_page
	.type	ftl_prog_page, %function
ftl_prog_page:
	stp	x29, x30, [sp, -64]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 255
	stp	x21, x22, [sp, 32]
	mov	w20, w1
	mov	x21, x2
	mov	x22, x3
	str	x23, [sp, 48]
	mov	w23, w4
	bl	sblk_wait_write_queue_completed
	mov	w0, w19
	mov	w5, 1
	mov	w4, w23
	mov	x3, x22
	mov	x2, x21
	mov	w1, w20
	bl	flash_prog_page_en
	mov	w19, w0
	cmn	w0, #1
	bne	.L2694
	mov	w2, 2683
	adrp	x1, .LANCHOR191
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR191
	add	x0, x0, :lo12:.LC0
	bl	printf
	adrp	x0, .LC146
	mov	w1, w20
	add	x0, x0, :lo12:.LC146
	bl	printf
.L2694:
	mov	w0, w19
	ldr	x23, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 64
	ret
	.size	ftl_prog_page, .-ftl_prog_page
	.section	.text.ftl_info_flush,"ax",@progbits
	.align	2
	.global	ftl_info_flush
	.type	ftl_info_flush, %function
ftl_info_flush:
	stp	x29, x30, [sp, -128]!
	mov	w1, 0
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR68
	stp	x23, x24, [sp, 48]
	adrp	x24, .LANCHOR69
	ldrb	w2, [x21, #:lo12:.LANCHOR68]
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR192
	str	w0, [x29, 116]
	add	x0, x20, :lo12:.LANCHOR192
	stp	x25, x26, [sp, 64]
	lsl	w2, w2, 1
	stp	x27, x28, [sp, 80]
	bl	ftl_memset
	ldr	x0, [x24, #:lo12:.LANCHOR69]
	ldrh	w1, [x0, 74]
	cmp	w1, 1
	bls	.L2698
	strh	wzr, [x0, 150]
.L2698:
	adrp	x23, .LANCHOR193
	add	x19, x23, :lo12:.LANCHOR193
	adrp	x25, .LANCHOR117
	mov	w26, 0
	add	x0, x25, :lo12:.LANCHOR117
	str	x0, [x29, 104]
.L2711:
	add	x0, x23, :lo12:.LANCHOR193
	adrp	x22, .LANCHOR194
	ldrh	w1, [x25, #:lo12:.LANCHOR117]
	add	x7, x20, :lo12:.LANCHOR192
	str	w1, [x29, 120]
	ldrh	w27, [x0, 2]
	ldr	x0, [x24, #:lo12:.LANCHOR69]
	ldrb	w1, [x21, #:lo12:.LANCHOR68]
	ldrb	w28, [x23, #:lo12:.LANCHOR193]
	ldr	w6, [x0, 4]
	lsl	w1, w1, 9
	add	w6, w6, 1
	str	w6, [x0, 4]
	ldr	w0, [x29, 116]
	str	w0, [x20, #:lo12:.LANCHOR192]
	ldr	x0, [x22, #:lo12:.LANCHOR194]
	str	w6, [x7, 4]
	bl	js_hash
	str	w0, [x7, 8]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2699
	adrp	x0, .LC148
	mov	w3, w6
	mov	w2, w27
	mov	w1, w28
	add	x0, x0, :lo12:.LC148
	bl	printf
.L2699:
	adrp	x1, .LANCHOR100
	ldrh	w0, [x19, 2]
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	cmp	w1, w0
	bhi	.L2700
	adrp	x27, .LANCHOR195
	adrp	x3, .LC0
	add	x27, x27, :lo12:.LANCHOR195
	add	x3, x3, :lo12:.LC0
.L2707:
	ldrb	w0, [x19, 1]
	adrp	x28, .LANCHOR6
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x19, 1]
	cmp	w0, 7
	bls	.L2701
	mov	x0, 0
.L2706:
	ldr	x2, [x28, #:lo12:.LANCHOR6]
	add	w1, w0, 8
	and	w26, w0, 65535
	add	x1, x2, x1, sxtw
	ldrb	w2, [x1, 32]
	add	w1, w2, 127
	and	w1, w1, 255
	cmp	w1, 125
	bhi	.L2702
	mov	x0, x3
	str	x3, [x29, 120]
	mov	w2, 846
	mov	x1, x27
	bl	printf
	ldr	x3, [x29, 120]
.L2705:
	strb	w26, [x19, 1]
	mov	w26, 1
.L2701:
	ldr	x0, [x28, #:lo12:.LANCHOR6]
	ldrb	w1, [x19, 1]
	add	x0, x0, x1
	ldrb	w28, [x0, 40]
	strb	w28, [x19]
	cmp	w28, 255
	beq	.L2707
	ldr	x0, [x29, 104]
	ldrh	w27, [x0]
	mov	w0, 0
	mul	w27, w27, w28
	mov	w1, w27
	bl	flash_erase_block
	ldrb	w4, [x21, #:lo12:.LANCHOR68]
	mov	w1, w27
	ldr	x2, [x22, #:lo12:.LANCHOR194]
	add	x3, x20, :lo12:.LANCHOR192
	mov	w0, 0
	add	w27, w27, 1
	bl	ftl_prog_page
	mov	w0, 1
	strh	w0, [x19, 2]
.L2708:
	ldrb	w4, [x21, #:lo12:.LANCHOR68]
	mov	w1, w27
	ldr	x2, [x22, #:lo12:.LANCHOR194]
	add	x3, x20, :lo12:.LANCHOR192
	mov	w0, 0
	bl	ftl_prog_page
	cmn	w0, #1
	ldrh	w1, [x19, 2]
	adrp	x0, .LANCHOR196
	add	w1, w1, 1
	strh	w1, [x19, 2]
	beq	.L2709
	ldrb	w1, [x0, #:lo12:.LANCHOR196]
	cbz	w1, .L2710
.L2709:
	strb	wzr, [x0, #:lo12:.LANCHOR196]
	b	.L2711
.L2702:
	cmp	w2, 255
	bne	.L2705
	add	x0, x0, 1
	cmp	x0, 8
	bne	.L2706
	mov	w26, w0
	b	.L2705
.L2700:
	ldr	w1, [x29, 120]
	madd	w27, w1, w28, w27
	cbnz	w0, .L2708
	mov	w1, w27
	bl	flash_erase_block
	b	.L2708
.L2710:
	cbnz	w26, .L2712
.L2720:
	adrp	x0, .LANCHOR193
	ldrb	w0, [x0, #:lo12:.LANCHOR193]
	cmp	w0, 255
	bne	.L2714
	adrp	x1, .LANCHOR195
	adrp	x0, .LC0
	mov	w2, 890
	add	x1, x1, :lo12:.LANCHOR195
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2714:
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2712:
	ldrb	w19, [x19, 1]
	adrp	x20, .LANCHOR195
	adrp	x21, .LC0
	add	x20, x20, :lo12:.LANCHOR195
	add	w19, w19, 1
	add	x21, x21, :lo12:.LC0
	adrp	x22, .LANCHOR6
.L2715:
	cmp	w19, 7
	bhi	.L2720
	ldr	x1, [x22, #:lo12:.LANCHOR6]
	add	w0, w19, 8
	add	x0, x1, x0, sxtw
	ldrb	w23, [x0, 32]
	add	w0, w23, 127
	and	w0, w0, 255
	cmp	w0, 125
	bhi	.L2716
	mov	w2, 881
	mov	x1, x20
	mov	x0, x21
	bl	printf
.L2717:
	adrp	x0, .LANCHOR117
	ldrh	w1, [x0, #:lo12:.LANCHOR117]
	mov	w0, 0
	mul	w1, w1, w23
	bl	flash_erase_block
	b	.L2718
.L2716:
	cmp	w23, 255
	bne	.L2717
.L2718:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L2715
	.size	ftl_info_flush, .-ftl_info_flush
	.section	.text.ftl_info_blk_init,"ax",@progbits
	.align	2
	.global	ftl_info_blk_init
	.type	ftl_info_blk_init, %function
ftl_info_blk_init:
	stp	x29, x30, [sp, -112]!
	adrp	x0, .LANCHOR197
	adrp	x1, .LANCHOR196
	mov	w2, 16384
	add	x29, sp, 0
	strb	wzr, [x0, #:lo12:.LANCHOR197]
	mov	w0, 1
	strb	w0, [x1, #:lo12:.LANCHOR196]
	adrp	x1, .LANCHOR198
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR194
	strb	w0, [x1, #:lo12:.LANCHOR198]
	adrp	x1, .LANCHOR9
	ldr	x0, [x21, #:lo12:.LANCHOR194]
	mov	x22, 7
	str	x0, [x1, #:lo12:.LANCHOR9]
	adrp	x1, .LANCHOR8
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR69
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	adrp	x20, .LANCHOR193
	stp	x23, x24, [sp, 48]
	adrp	x23, .LANCHOR6
	stp	x25, x26, [sp, 64]
	adrp	x24, .LANCHOR68
	add	x1, x0, x1, lsl 2
	stp	x27, x28, [sp, 80]
	str	x1, [x19, #:lo12:.LANCHOR69]
	mov	w1, 0
	bl	ftl_memset
	adrp	x26, .LANCHOR117
	adrp	x0, .LANCHOR199
	mov	w1, 0
	mov	w2, 16384
	mov	w27, 21574
	ldr	x0, [x0, #:lo12:.LANCHOR199]
	add	x26, x26, :lo12:.LANCHOR117
	add	x24, x24, :lo12:.LANCHOR68
	movk	w27, 0x494c, lsl 16
	bl	ftl_memset
	ldr	x1, [x23, #:lo12:.LANCHOR6]
	add	x0, x20, :lo12:.LANCHOR193
	strb	wzr, [x0, 1]
	ldrb	w1, [x1, 40]
	strb	w1, [x20, #:lo12:.LANCHOR193]
	strh	wzr, [x0, 2]
.L2736:
	ldr	x1, [x23, #:lo12:.LANCHOR6]
	add	w0, w22, 8
	sxth	w25, w22
	mov	w28, w22
	add	x0, x1, x0, sxtw
	ldrb	w0, [x0, 32]
	cmp	w0, 255
	bne	.L2735
.L2740:
	sub	x22, x22, #1
	cmn	x22, #1
	bne	.L2736
	mov	w25, 0
.L2737:
	adrp	x24, .LANCHOR19
	ldr	w0, [x24, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2741
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w2, 4800
	mov	w1, w22
	ldr	w3, [x0]
	adrp	x0, .LC150
	add	x0, x0, :lo12:.LC150
	bl	printf
.L2741:
	cmn	w22, #1
	bne	.L2742
	ldr	x0, [x21, #:lo12:.LANCHOR194]
	mov	w1, 0
	mov	w2, 16384
	bl	ftl_memset
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w1, 21574
	movk	w1, 0x494c, lsl 16
	str	w1, [x0]
	mov	w1, 36
	movk	w1, 0x6, lsl 16
	str	w1, [x0, 12]
	mov	w0, w22
.L2734:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L2735:
	ldrh	w6, [x26]
	adrp	x7, .LANCHOR192
	ldrb	w4, [x24]
	add	x7, x7, :lo12:.LANCHOR192
	ldr	x2, [x21, #:lo12:.LANCHOR194]
	mov	x3, x7
	str	x7, [x29, 96]
	mul	w6, w6, w0
	mov	w0, 0
	str	w6, [x29, 108]
	mov	w1, w6
	bl	ftl_read_page
	mov	w5, w0
	cmn	w0, #1
	ldr	w6, [x29, 108]
	ldr	x7, [x29, 96]
	bne	.L2738
	ldrb	w4, [x24]
	mov	x3, x7
	ldr	x2, [x21, #:lo12:.LANCHOR194]
	add	w1, w6, 1
	mov	w0, 0
	bl	ftl_read_page
	mov	w5, w0
.L2738:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L2739
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w2, w5
	str	w5, [x29, 108]
	mov	w3, 749
	mov	w1, w28
	ldr	w4, [x0]
	adrp	x0, .LC149
	add	x0, x0, :lo12:.LC149
	bl	printf
	ldr	w5, [x29, 108]
.L2739:
	cmn	w5, #1
	beq	.L2740
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	ldr	w0, [x0]
	cmp	w0, w27
	bne	.L2740
	mov	w22, w25
	b	.L2737
.L2742:
	ldr	x1, [x23, #:lo12:.LANCHOR6]
	add	w0, w25, 8
	ldr	x2, [x21, #:lo12:.LANCHOR194]
	mov	w4, 4
	adrp	x26, .LANCHOR68
	mov	w28, 21574
	add	x0, x1, x0, sxtw
	adrp	x27, .LC151
	add	x26, x26, :lo12:.LANCHOR68
	add	x27, x27, :lo12:.LC151
	movk	w28, 0x494c, lsl 16
	ldrb	w1, [x0, 32]
	add	x0, x20, :lo12:.LANCHOR193
	strb	w1, [x20, #:lo12:.LANCHOR193]
	strb	w25, [x0, 1]
	adrp	x25, .LANCHOR192
	mov	w0, 0
	add	x3, x25, :lo12:.LANCHOR192
	bl	flash_get_last_written_page
	sxth	w22, w0
	add	w0, w0, 1
	ldrb	w23, [x20, #:lo12:.LANCHOR193]
	and	w0, w0, 65535
	str	w0, [x29, 108]
	adrp	x0, .LANCHOR117
	ldrh	w0, [x0, #:lo12:.LANCHOR117]
	madd	w23, w23, w0, w22
.L2744:
	tbnz	w22, #31, .L2748
	ldrb	w4, [x26]
	add	x5, x25, :lo12:.LANCHOR192
	ldr	x2, [x21, #:lo12:.LANCHOR194]
	mov	x3, x5
	mov	w1, w23
	mov	w0, 0
	str	x5, [x29, 96]
	bl	ftl_read_page
	cmn	w0, #1
	beq	.L2745
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	ldr	x5, [x29, 96]
	ldr	w0, [x0]
	cmp	w0, w28
	bne	.L2745
	ldr	w6, [x5, 8]
	cbnz	w6, .L2746
.L2748:
	ldrh	w0, [x29, 108]
	add	x20, x20, :lo12:.LANCHOR193
	strh	w0, [x20, 2]
	bl	ftl_tmp_into_update
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 64]
	add	w0, w0, 1
	str	w0, [x1, 64]
	mov	w0, 0
	bl	ftl_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	ldr	w0, [x24, #:lo12:.LANCHOR19]
	tbnz	x0, 14, .L2747
.L2764:
	mov	w0, 0
	b	.L2734
.L2746:
	ldr	x0, [x21, #:lo12:.LANCHOR194]
	ldrb	w1, [x26]
	lsl	w1, w1, 9
	bl	js_hash
	cmp	w6, w0
	beq	.L2748
	mov	w1, w6
	mov	x0, x27
	bl	printf
.L2745:
	sub	w22, w22, #1
	sub	w23, w23, #1
	sxth	w22, w22
	b	.L2744
.L2747:
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 156]
	adrp	x0, .LC152
	add	x0, x0, :lo12:.LC152
	bl	printf
	b	.L2764
	.size	ftl_info_blk_init, .-ftl_info_blk_init
	.section	.text.ftl_ext_info_flush,"ax",@progbits
	.align	2
	.global	ftl_ext_info_flush
	.type	ftl_ext_info_flush, %function
ftl_ext_info_flush:
	stp	x29, x30, [sp, -96]!
	adrp	x0, .LANCHOR12
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	ldr	w1, [x0, 520]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	cbz	w1, .L2766
	str	wzr, [x0, 520]
.L2766:
	adrp	x20, .LANCHOR100
	adrp	x22, .LANCHOR200
	adrp	x21, .LANCHOR31
	add	x20, x20, :lo12:.LANCHOR100
	add	x22, x22, :lo12:.LANCHOR200
	add	x21, x21, :lo12:.LANCHOR31
	mov	w0, 0
	bl	ftl_total_vpn_update
.L2767:
	adrp	x23, .LANCHOR69
	mov	x24, x23
.L2770:
	ldr	x0, [x23, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 56]
	add	w1, w1, 1
	str	w1, [x0, 56]
	ldrh	w1, [x0, 140]
	ldrh	w0, [x20]
	cmp	w1, w0
	bcc	.L2768
	bl	ftl_ext_alloc_new_blk
.L2768:
	ldr	x0, [x24, #:lo12:.LANCHOR69]
	ldrh	w1, [x0, 130]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L2769
	adrp	x0, .LC0
	mov	w2, 2216
	mov	x1, x22
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2769:
	ldrb	w19, [x21]
	mov	w0, 24
	ldr	x1, [x24, #:lo12:.LANCHOR69]
	adrp	x26, .LANCHOR68
	sub	w19, w0, w19
	adrp	x0, .LANCHOR80
	adrp	x27, .LANCHOR192
	add	x25, x27, :lo12:.LANCHOR192
	ldrh	w0, [x0, #:lo12:.LANCHOR80]
	ldrh	w2, [x1, 130]
	sub	w0, w19, w0
	mov	w19, 1
	asr	w28, w2, w0
	lsl	w19, w19, w0
	adrp	x0, .LANCHOR117
	sub	w19, w19, #1
	and	w19, w19, w2
	ldrh	w2, [x0, #:lo12:.LANCHOR117]
	ldrh	w0, [x1, 140]
	sxth	w19, w19
	mov	w1, 0
	madd	w19, w19, w2, w0
	ldrb	w2, [x26, #:lo12:.LANCHOR68]
	mov	x0, x25
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x0, [x24, #:lo12:.LANCHOR69]
	ldrb	w7, [x26, #:lo12:.LANCHOR68]
	str	wzr, [x27, #:lo12:.LANCHOR192]
	ldr	w0, [x0, 56]
	lsl	w1, w7, 9
	str	w0, [x25, 4]
	adrp	x0, .LANCHOR199
	ldr	x6, [x0, #:lo12:.LANCHOR199]
	mov	x0, x6
	bl	js_hash
	mov	x2, x6
	mov	w1, w19
	str	w0, [x25, 8]
	mov	w4, w7
	mov	x3, x25
	mov	w0, w28
	bl	ftl_prog_page
	ldr	x2, [x24, #:lo12:.LANCHOR69]
	ldrh	w1, [x2, 140]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x2, 140]
	cmp	w1, 1
	beq	.L2770
	cmn	w0, #1
	adrp	x0, .LANCHOR198
	beq	.L2771
	ldrb	w1, [x0, #:lo12:.LANCHOR198]
	cbz	w1, .L2772
.L2771:
	strb	wzr, [x0, #:lo12:.LANCHOR198]
	b	.L2767
.L2772:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
	.size	ftl_ext_info_flush, .-ftl_ext_info_flush
	.section	.text.ftl_ext_info_init,"ax",@progbits
	.align	2
	.global	ftl_ext_info_init
	.type	ftl_ext_info_init, %function
ftl_ext_info_init:
	stp	x29, x30, [sp, -128]!
	adrp	x0, .LANCHOR127
	adrp	x2, .LANCHOR80
	mov	w4, 4
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR69
	strh	wzr, [x0, #:lo12:.LANCHOR127]
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR199
	stp	x27, x28, [sp, 80]
	stp	x23, x24, [sp, 48]
	adrp	x24, .LANCHOR192
	ldrh	w1, [x0, 130]
	adrp	x0, .LANCHOR31
	stp	x25, x26, [sp, 64]
	add	x3, x24, :lo12:.LANCHOR192
	ldrb	w19, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w19
	ldrh	w19, [x2, #:lo12:.LANCHOR80]
	ldr	x2, [x21, #:lo12:.LANCHOR199]
	sub	w0, w0, w19
	mov	w19, 1
	lsl	w19, w19, w0
	sub	w19, w19, #1
	asr	w22, w1, w0
	and	w19, w19, w1
	and	w27, w22, 255
	mov	w1, w19
	mov	w0, w27
	bl	flash_get_last_written_page
	sxth	w23, w0
	adrp	x0, .LANCHOR19
	stp	x0, x24, [x29, 112]
	ldr	w1, [x0, #:lo12:.LANCHOR19]
	tbz	x1, 12, .L2783
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	adrp	x1, .LANCHOR201
	and	w4, w22, 65535
	mov	w3, w23
	mov	w2, 2261
	add	x1, x1, :lo12:.LANCHOR201
	ldrh	w5, [x0, 130]
	adrp	x0, .LC153
	add	x0, x0, :lo12:.LC153
	bl	printf
.L2783:
	adrp	x25, .LANCHOR68
	adrp	x26, .LANCHOR117
	mov	w28, 20038
	add	x25, x25, :lo12:.LANCHOR68
	add	x26, x26, :lo12:.LANCHOR117
	mov	w24, 0
	movk	w28, 0x4549, lsl 16
.L2784:
	and	w22, w23, 65535
	sub	w0, w22, w24
	tbnz	x0, 15, .L2789
	ldr	x0, [x29, 120]
	sub	w1, w23, w24
	ldrb	w4, [x25]
	add	x5, x0, :lo12:.LANCHOR192
	ldrh	w0, [x26]
	ldr	x2, [x21, #:lo12:.LANCHOR199]
	mov	x3, x5
	str	x5, [x29, 104]
	madd	w1, w0, w19, w1
	mov	w0, w27
	bl	flash_read_page_en
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L2785
	adrp	x0, .LANCHOR12
	ldr	x5, [x29, 104]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldr	w0, [x0]
	cmp	w0, w28
	bne	.L2785
	ldr	w6, [x5, 8]
	cbnz	w6, .L2786
.L2789:
	bl	zftl_sblk_list_init
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrh	w1, [x0, 140]
	cmp	w1, w23
	bgt	.L2788
	add	w22, w22, 1
	strh	w22, [x0, 140]
	bl	ftl_ext_info_flush
.L2788:
	adrp	x0, .LANCHOR12
	mov	w1, -1
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	strh	w1, [x0, 584]
	strh	w1, [x0, 586]
	strh	w1, [x0, 588]
	strh	w1, [x0, 590]
	mov	w1, 65535
	str	w1, [x0, 560]
	mov	w1, -1
	str	w1, [x0, 564]
	ldr	x1, [x29, 112]
	str	wzr, [x0, 520]
	str	wzr, [x0, 604]
	str	wzr, [x0, 608]
	ldr	w1, [x1, #:lo12:.LANCHOR19]
	tbz	x1, 12, .L2791
	ldr	w3, [x0, 12]
	adrp	x1, .LANCHOR201
	adrp	x0, .LC155
	mov	w4, 0
	mov	w2, 0
	add	x1, x1, :lo12:.LANCHOR201
	add	x0, x0, :lo12:.LC155
	bl	printf
.L2791:
	adrp	x0, .LANCHOR78
	mov	w1, -1
	ldp	x19, x20, [sp, 16]
	strh	w1, [x0, #:lo12:.LANCHOR78]
	ldp	x21, x22, [sp, 32]
	mov	w0, 0
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L2786:
	ldr	x0, [x21, #:lo12:.LANCHOR199]
	ldrb	w1, [x25]
	lsl	w1, w1, 9
	bl	js_hash
	cmp	w6, w0
	beq	.L2789
	adrp	x0, .LC154
	mov	w1, w6
	add	x0, x0, :lo12:.LC154
	bl	printf
.L2785:
	add	w24, w24, 1
	b	.L2784
	.size	ftl_ext_info_init, .-ftl_ext_info_init
	.section	.text.ftl_low_format_data_init,"ax",@progbits
	.align	2
	.global	ftl_low_format_data_init
	.type	ftl_low_format_data_init, %function
ftl_low_format_data_init:
	stp	x29, x30, [sp, -48]!
	adrp	x0, .LANCHOR199
	mov	w2, 16384
	mov	w1, 0
	add	x29, sp, 0
	ldr	x0, [x0, #:lo12:.LANCHOR199]
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR69
	str	x21, [sp, 32]
	bl	ftl_memset
	bl	zftl_sblk_list_init
	mov	w0, 1
	bl	ftl_alloc_sblk
	mov	w1, 0
	mov	w21, w0
	bl	ftl_erase_sblk
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	mov	w0, w21
	add	x1, x1, 672
	bl	ftl_get_blk_list_in_sblk
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	ldrh	w20, [x0, 672]
	strh	wzr, [x0, 690]
	mov	w0, 65533
	sub	w1, w20, #1
	cmp	w0, w1, uxth
	bcs	.L2803
	adrp	x1, .LANCHOR202
	adrp	x0, .LC0
	mov	w2, 2489
	add	x1, x1, :lo12:.LANCHOR202
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2803:
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w2, 256
	mov	w1, 255
	add	x0, x0, 416
	strh	wzr, [x0, 280]
	bl	ftl_memset
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w2, 4096
	mov	w1, 0
	add	x0, x0, 704
	bl	ftl_memset
	adrp	x0, .LANCHOR31
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w2
	adrp	x2, .LANCHOR80
	strh	w21, [x1, 416]
	adrp	x21, .LANCHOR12
	ldrh	w2, [x2, #:lo12:.LANCHOR80]
	strh	w20, [x1, 692]
	sub	w0, w0, w2
	asr	w0, w20, w0
	strh	w0, [x1, 694]
	mov	w0, 1
	strh	w0, [x1, 688]
	adrp	x0, .LANCHOR203
	ldrh	w0, [x0, #:lo12:.LANCHOR203]
	strh	w0, [x1, 698]
	mov	w1, 20038
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	movk	w1, 0x4549, lsl 16
	str	w1, [x0]
	bl	ftl_alloc_sys_blk
	mov	w20, w0
	mov	w1, 0
	bl	ftl_erase_phy_blk
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w1, 2
	strh	w20, [x0, 130]
	mov	w20, -1
	strh	wzr, [x0, 140]
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	add	x0, x0, 16
	strh	w20, [x0, 568]
	strh	w20, [x0, 570]
	strh	w20, [x0, 572]
	strh	w20, [x0, 574]
	bl	ftl_open_sblk_init
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	mov	w1, 3
	add	x0, x0, 48
	bl	ftl_open_sblk_init
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	add	x0, x0, 136
	ldrh	w2, [x1, 134]
	strh	w2, [x0, -10]
	strh	w20, [x0, -56]
	mov	w2, -1
	strh	w20, [x0, -6]
	str	w2, [x0, 408]
	strh	wzr, [x0, -12]
	strh	wzr, [x0, -16]
	strh	wzr, [x0, -14]
	strh	w2, [x1, 126]
	mov	w2, 256
	str	wzr, [x0, 384]
	mov	w1, 255
	str	wzr, [x0, 388]
	str	wzr, [x0, 392]
	bl	ftl_memset
	mov	w2, 128
	mov	w1, 255
	ldr	x0, [x21, #:lo12:.LANCHOR12]
	add	x0, x0, 392
	bl	ftl_memset
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	bl	ftl_info_blk_init
	ldr	x21, [sp, 32]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_low_format_data_init, .-ftl_low_format_data_init
	.section	.text.ftl_low_format,"ax",@progbits
	.align	2
	.global	ftl_low_format
	.type	ftl_low_format, %function
ftl_low_format:
	stp	x29, x30, [sp, -80]!
	mov	w1, 0
	adrp	x0, .LC156
	add	x0, x0, :lo12:.LC156
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR204
	stp	x21, x22, [sp, 32]
	add	x20, x20, :lo12:.LANCHOR204
	stp	x25, x26, [sp, 64]
	adrp	x22, .LANCHOR6
	mov	x25, x22
	stp	x23, x24, [sp, 48]
	mov	w19, 8
	adrp	x23, .LC0
	bl	printf
.L2808:
	ldr	x0, [x22, #:lo12:.LANCHOR6]
	add	x0, x0, x19, sxtw
	ldrb	w21, [x0, 32]
	add	w0, w21, 127
	and	w0, w0, 255
	cmp	w0, 125
	bhi	.L2806
	mov	w2, 2544
	mov	x1, x20
	add	x0, x23, :lo12:.LC0
	bl	printf
.L2806:
	cmp	w21, 255
	beq	.L2807
	adrp	x0, .LANCHOR117
	ldrh	w1, [x0, #:lo12:.LANCHOR117]
	mov	w0, 0
	mul	w1, w1, w21
	bl	flash_erase_block
.L2807:
	add	w19, w19, 1
	cmp	w19, 16
	bne	.L2808
	bl	sblk_init
	adrp	x22, .LANCHOR9
	bl	ftl_info_blk_init
	adrp	x19, .LANCHOR8
	adrp	x0, .LANCHOR194
	mov	w2, 16384
	mov	w1, 0
	ldr	x0, [x0, #:lo12:.LANCHOR194]
	bl	ftl_memset
	ldr	x0, [x22, #:lo12:.LANCHOR9]
	mov	w3, 1
	ldrh	w2, [x19, #:lo12:.LANCHOR8]
	add	x2, x0, x2, lsl 2
.L2809:
	cmp	x0, x2
	bne	.L2810
	adrp	x21, .LANCHOR69
	mov	w1, 21574
	adrp	x24, .LANCHOR74
	add	x24, x24, :lo12:.LANCHOR74
	ldr	x0, [x21, #:lo12:.LANCHOR69]
	movk	w1, 0x494c, lsl 16
	mov	w20, 0
	mov	w26, 1
	strh	wzr, [x0, 148]
	str	w1, [x0]
.L2811:
	ldrh	w0, [x19, #:lo12:.LANCHOR8]
	adrp	x23, .LANCHOR81
	cmp	w0, w20
	bhi	.L2820
	ldr	x0, [x25, #:lo12:.LANCHOR6]
	mov	w4, 3
	ldrb	w2, [x23, #:lo12:.LANCHOR81]
	mov	w10, 15
	ldr	x6, [x21, #:lo12:.LANCHOR69]
	cmp	w2, 1
	ldr	x1, [x22, #:lo12:.LANCHOR9]
	ldrb	w0, [x0, 47]
	csinc	w4, w4, wzr, ne
	and	w4, w4, 255
	and	w8, w2, 65535
	ldrh	w3, [x6, 148]
	udiv	w0, w0, w2
	and	w5, w0, 65535
	ubfiz	x0, x0, 2, 8
	add	x0, x0, 4
	add	w20, w5, 1
	add	x0, x1, x0
.L2823:
	cmp	w2, 4
	add	x1, x1, 4
	csel	w7, w10, w4, eq
	strb	w7, [x1, -1]
	ldrb	w7, [x1, -2]
	orr	w7, w7, -32
	strb	w7, [x1, -2]
	cmp	x1, x0
	bne	.L2823
	mul	w5, w5, w8
	mov	w4, 16
	add	w0, w8, w3
	sdiv	w4, w4, w2
	add	w0, w5, w0, uxth
	strh	w0, [x6, 148]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	add	w4, w20, w4
	and	w4, w4, 65535
	strh	w4, [x6, 134]
	tbz	x0, 12, .L2824
	adrp	x0, .LC157
	mov	w3, w20
	mov	w2, 128
	mov	w1, 2603
	add	x0, x0, :lo12:.LC157
	bl	printf
.L2824:
	ldr	x0, [x21, #:lo12:.LANCHOR69]
	mov	w2, 128
	mov	w1, 255
	add	x0, x0, 160
	bl	ftl_memset
	adrp	x0, .LANCHOR118
	ldrb	w10, [x23, #:lo12:.LANCHOR81]
	adrp	x3, .LANCHOR80
	ldr	x2, [x21, #:lo12:.LANCHOR69]
	ldrb	w16, [x0, #:lo12:.LANCHOR118]
	adrp	x0, .LANCHOR31
	and	w11, w10, 65535
	ldr	x15, [x22, #:lo12:.LANCHOR9]
	ldrb	w4, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	ldrh	w8, [x2, 134]
	sub	w0, w0, w4
	ldrh	w4, [x3, #:lo12:.LANCHOR80]
	mul	w1, w20, w11
	mov	w3, 0
	sub	w0, w0, w4
	mov	w4, 1
	and	w1, w1, 65535
	lsl	w4, w4, w0
	and	w4, w4, 65535
.L2825:
	cmp	w20, w8
	bcc	.L2831
	ldrh	w0, [x19, #:lo12:.LANCHOR8]
	strh	w3, [x2, 112]
	sub	w0, w0, w8
	strh	wzr, [x2, 114]
	strh	w0, [x2, 116]
	strh	wzr, [x2, 118]
	strh	w8, [x2, 132]
	bl	ftl_low_format_data_init
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2810:
	ldrb	w1, [x0, 2]
	add	x0, x0, 4
	and	w1, w1, 31
	bfi	w1, w3, 3, 2
	strb	w1, [x0, -2]
	b	.L2809
.L2820:
	adrp	x0, .LANCHOR87
	strh	w20, [x24]
	ldrb	w0, [x0, #:lo12:.LANCHOR87]
	cbnz	w0, .L2812
	mov	w0, w20
	bl	ftl_test_block
.L2812:
	ldrb	w11, [x23, #:lo12:.LANCHOR81]
	adrp	x0, .LANCHOR118
	ldr	x6, [x22, #:lo12:.LANCHOR9]
	mov	w7, 0
	ldrb	w14, [x0, #:lo12:.LANCHOR118]
	mov	w10, 0
	ldr	x13, [x21, #:lo12:.LANCHOR69]
	mov	w8, 0
	mul	w12, w20, w11
	add	x6, x6, x20, uxth 2
.L2813:
	cmp	w8, w14
	bcs	.L2817
	add	w15, w11, w7
	b	.L2818
.L2816:
	add	w1, w7, w12
	mov	w0, w8
	bl	flash_check_bad_block
	cbz	w0, .L2814
	ldrb	w1, [x6, 3]
	lsl	w0, w26, w7
	orr	w0, w0, w1
	strb	w0, [x6, 3]
	ldrh	w0, [x13, 148]
	add	w0, w0, 1
	strh	w0, [x13, 148]
.L2815:
	add	w7, w7, 1
.L2818:
	cmp	w7, w15
	bne	.L2816
	add	w8, w8, 1
	sub	w12, w12, w11
	and	w8, w8, 65535
	b	.L2813
.L2814:
	add	w10, w10, 1
	and	w10, w10, 65535
	b	.L2815
.L2817:
	cbnz	w10, .L2819
	ldrb	w0, [x6, 2]
	orr	w0, w0, -32
	strb	w0, [x6, 2]
.L2819:
	add	w20, w20, 1
	and	w20, w20, 65535
	b	.L2811
.L2831:
	add	x13, x15, x20, uxth 2
	mov	w6, 0
	mov	w12, 0
	mov	w5, 0
	ldrb	w0, [x13, 2]
	orr	w0, w0, -32
	strb	w0, [x13, 2]
.L2826:
	cmp	w5, w16
	bcc	.L2833
	add	w20, w20, 1
	add	w1, w1, w11
	and	w20, w20, 65535
	and	w1, w1, 65535
	b	.L2825
.L2829:
	ldrb	w14, [x13, 3]
	add	w17, w12, w7
	asr	w14, w14, w17
	tbnz	x14, 0, .L2827
	cmp	w10, 1
	bls	.L2832
	and	w0, w0, 1
	add	w0, w1, w0
	and	w0, w0, 65535
.L2828:
	add	x14, x2, x3, sxtw 1
	add	w3, w3, 1
	and	w3, w3, 65535
	add	w0, w0, w6
	strh	w0, [x14, 160]
.L2827:
	add	x7, x7, 1
.L2830:
	and	w0, w7, 65535
	cmp	w0, w11
	bcc	.L2829
	add	w5, w5, 1
	add	w6, w4, w6
	and	w5, w5, 65535
	add	w12, w12, w10
	and	w6, w6, 65535
	b	.L2826
.L2832:
	mov	w0, w1
	b	.L2828
.L2833:
	mov	x7, 0
	b	.L2830
	.size	ftl_low_format, .-ftl_low_format
	.section	.text.ftl_re_low_format,"ax",@progbits
	.align	2
	.global	ftl_re_low_format
	.type	ftl_re_low_format, %function
ftl_re_low_format:
	stp	x29, x30, [sp, -16]!
	mov	w1, 1
	adrp	x0, .LC158
	add	x0, x0, :lo12:.LC158
	add	x29, sp, 0
	bl	printf
	bl	sblk_init
	bl	ftl_info_blk_init
	bl	ftl_ext_info_init
	adrp	x0, .LANCHOR69
	adrp	x2, .LANCHOR8
	mov	w3, 0
	mov	w4, 0
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	mov	w5, 0
	ldrh	w7, [x2, #:lo12:.LANCHOR8]
	adrp	x2, .LANCHOR9
	ldr	x2, [x2, #:lo12:.LANCHOR9]
	ldrh	w1, [x0, 134]
	add	x2, x2, x1, uxth 2
.L2844:
	cmp	w1, w7
	bcc	.L2848
	strh	w5, [x0, 114]
	strh	w4, [x0, 118]
	strh	w3, [x0, 116]
	strh	wzr, [x0, 122]
	strh	wzr, [x0, 120]
	strh	wzr, [x0, 124]
	bl	ftl_low_format_data_init
	mov	w0, 0
	ldp	x29, x30, [sp], 16
	ret
.L2848:
	ldrb	w6, [x2, 2]
	and	w8, w6, 31
	strb	w8, [x2, 2]
	ands	w6, w6, 24
	bne	.L2845
	add	w5, w5, 1
	and	w5, w5, 65535
.L2846:
	add	w1, w1, 1
	add	x2, x2, 4
	and	w1, w1, 65535
	b	.L2844
.L2845:
	cmp	w6, 16
	bne	.L2847
	add	w4, w4, 1
	and	w4, w4, 65535
	b	.L2846
.L2847:
	add	w3, w3, 1
	and	w3, w3, 65535
	b	.L2846
	.size	ftl_re_low_format, .-ftl_re_low_format
	.section	.text.ftl_prog_ppa_page,"ax",@progbits
	.align	2
	.global	ftl_prog_ppa_page
	.type	ftl_prog_ppa_page, %function
ftl_prog_ppa_page:
	adrp	x4, .LANCHOR31
	mov	w5, 1
	ldrb	w6, [x4, #:lo12:.LANCHOR31]
	mov	w4, 24
	sub	w4, w4, w6
	lsl	w7, w5, w4
	sub	w7, w7, #1
	lsl	w5, w5, w6
	sub	w6, w5, #1
	lsr	w5, w0, w4
	mov	w4, w3
	mov	x3, x2
	mov	x2, x1
	and	w1, w7, w0
	and	w0, w6, w5
	b	ftl_prog_page
	.size	ftl_prog_ppa_page, .-ftl_prog_ppa_page
	.section	.text.ftl_write_last_log_page,"ax",@progbits
	.align	2
	.global	ftl_write_last_log_page
	.type	ftl_write_last_log_page, %function
ftl_write_last_log_page:
	ldrh	w1, [x0, 6]
	cmp	w1, 1
	bne	.L2853
	stp	x29, x30, [sp, -48]!
	adrp	x1, .LANCHOR123
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	stp	x21, x22, [sp, 32]
	ldr	x20, [x1, #:lo12:.LANCHOR123]
	ldrh	w22, [x0, 12]
	bl	ftl_get_new_free_page
	mov	w21, w0
	cmn	w0, #1
	beq	.L2854
	ldrh	w0, [x19]
	add	x20, x20, x22, uxth 2
	bl	ftl_vpn_decrement
	adrp	x0, .LANCHOR190
	mov	w1, 15555
	add	x7, x0, :lo12:.LANCHOR190
	movk	w1, 0xf55f, lsl 16
	str	w1, [x0, #:lo12:.LANCHOR190]
	adrp	x0, .LANCHOR100
	ldrh	w1, [x0, #:lo12:.LANCHOR100]
	adrp	x0, .LANCHOR85
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	mul	w1, w1, w0
	mov	x0, x20
	lsl	w1, w1, 2
	bl	js_hash
	mov	x1, x7
	mov	x2, 0
	stp	w0, wzr, [x7, 4]
	mov	w0, 2
	str	wzr, [x7, 12]
	str	wzr, [x1, 16]!
	bl	ftl_debug_info_fill
	mov	x2, x7
	adrp	x0, .LANCHOR68
	mov	x1, x20
	ldrb	w3, [x0, #:lo12:.LANCHOR68]
	mov	w0, w21
	bl	ftl_prog_ppa_page
.L2854:
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L2853:
	mov	w0, -1
	ret
	.size	ftl_write_last_log_page, .-ftl_write_last_log_page
	.section	.text.pm_write_page,"ax",@progbits
	.align	2
	.global	pm_write_page
	.type	pm_write_page, %function
pm_write_page:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR100
	stp	x23, x24, [sp, 48]
	adrp	x22, .LANCHOR117
	adrp	x24, .LANCHOR69
	mov	x23, x1
	add	x21, x21, :lo12:.LANCHOR100
	mov	x20, x24
	add	x22, x22, :lo12:.LANCHOR117
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	mov	w25, 65535
.L2860:
	ldr	x0, [x24, #:lo12:.LANCHOR69]
	ldr	w1, [x0, 48]
	ldrh	w2, [x0, 696]
	add	w1, w1, 1
	str	w1, [x0, 48]
	ldrh	w1, [x21]
	cmp	w2, w1
	bcs	.L2861
	ldrh	w0, [x0, 692]
	cmp	w0, w25
	bne	.L2862
.L2861:
	bl	pm_alloc_new_blk
	mov	w0, 0
	bl	ftl_info_flush
.L2862:
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrh	w0, [x0, 692]
	cmp	w0, w25
	bne	.L2863
	adrp	x1, .LANCHOR205
	adrp	x0, .LC0
	mov	w2, 303
	add	x1, x1, :lo12:.LANCHOR205
	add	x0, x0, :lo12:.LC0
	bl	printf
.L2863:
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	adrp	x27, .LANCHOR206
	ldrh	w1, [x22]
	mov	w2, 64
	ldrh	w26, [x0, 692]
	ldrh	w0, [x0, 696]
	madd	w26, w26, w1, w0
	ldr	x0, [x27, #:lo12:.LANCHOR206]
	mov	w1, 0
	bl	ftl_memset
	ldr	x6, [x27, #:lo12:.LANCHOR206]
	ldr	x7, [x20, #:lo12:.LANCHOR69]
	str	w19, [x6]
	ldr	w0, [x7, 48]
	str	w0, [x6, 4]
	adrp	x0, .LANCHOR68
	ldrb	w8, [x0, #:lo12:.LANCHOR68]
	mov	x0, x23
	lsl	w1, w8, 9
	bl	js_hash
	str	w0, [x6, 8]
	ldrb	w0, [x7, 694]
	mov	x2, x23
	mov	w1, w26
	mov	w4, w8
	mov	x3, x6
	bl	ftl_prog_page
	ldr	x2, [x20, #:lo12:.LANCHOR69]
	ldrh	w1, [x2, 696]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x2, 696]
	cmp	w1, 1
	adrp	x1, .LANCHOR207
	beq	.L2864
	ldrb	w3, [x1, #:lo12:.LANCHOR207]
	cbz	w3, .L2865
.L2864:
	strb	wzr, [x1, #:lo12:.LANCHOR207]
	b	.L2860
.L2865:
	cmn	w0, #1
	bne	.L2867
	mov	w1, w26
	adrp	x0, .LC159
	add	x0, x0, :lo12:.LC159
	bl	printf
	b	.L2860
.L2867:
	ldrh	w0, [x2, 698]
	cmp	w19, w0
	bcs	.L2868
	add	x19, x2, x19, uxtw 2
	str	w26, [x19, 704]
.L2868:
	mov	w0, 0
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
	.size	pm_write_page, .-pm_write_page
	.section	.text.ftl_dump_write_open_sblk,"ax",@progbits
	.align	2
	.global	ftl_dump_write_open_sblk
	.type	ftl_dump_write_open_sblk, %function
ftl_dump_write_open_sblk:
	sub	sp, sp, #224
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x19, x20, [sp, 64]
	and	w20, w0, 65535
	adrp	x0, .LANCHOR8
	stp	x21, x22, [sp, 80]
	stp	x23, x24, [sp, 96]
	ldrh	w0, [x0, #:lo12:.LANCHOR8]
	stp	x25, x26, [sp, 112]
	stp	x27, x28, [sp, 128]
	cmp	w0, w20
	bls	.L2873
	adrp	x0, .LANCHOR89
	str	x0, [x29, 120]
	ldrb	w1, [x0, #:lo12:.LANCHOR89]
	cbnz	w1, .L2875
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L2873
.L2875:
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L2873
	adrp	x0, .LANCHOR9
	ubfiz	x14, x20, 2, 16
	mov	x15, x0
	ldr	x1, [x0, #:lo12:.LANCHOR9]
	add	x1, x1, x14
	ldrb	w1, [x1, 2]
	and	w1, w1, 224
	cmp	w1, 160
	bne	.L2897
	adrp	x0, .LANCHOR84
	ldrb	w25, [x0, #:lo12:.LANCHOR84]
.L2876:
	add	x21, x29, 176
	adrp	x23, .LANCHOR100
	mov	w0, w20
	adrp	x26, .LANCHOR117
	add	x26, x26, :lo12:.LANCHOR117
	mov	w27, 0
	strh	w20, [x21, -32]!
	mov	w28, 0
	add	x1, x21, 16
	bl	ftl_get_blk_list_in_sblk
	ldrh	w1, [x23, #:lo12:.LANCHOR100]
	and	w0, w0, 255
	strb	w0, [x29, 153]
	strb	wzr, [x29, 149]
	strh	wzr, [x29, 146]
	mul	w0, w0, w1
	strh	wzr, [x29, 154]
	strh	w0, [x29, 150]
	ldr	x0, [x15, #:lo12:.LANCHOR9]
	add	x1, x0, x14
	ldr	w5, [x0, x14]
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ldrh	w4, [x0, x14]
	adrp	x0, .LC160
	ubfx	x5, x5, 11, 8
	add	x0, x0, :lo12:.LC160
	ubfx	x3, x2, 3, 2
	and	w4, w4, 2047
	ubfx	x2, x2, 5, 3
	bl	printf
	mov	w0, 1
	bl	buf_alloc
	mov	x19, x0
	mov	w10, 0
	add	x0, x23, :lo12:.LANCHOR100
	str	x0, [x29, 128]
.L2877:
	ldr	x0, [x29, 128]
	ldrh	w0, [x0]
	cmp	w0, w27
	bls	.L2885
	lsl	w22, w27, 1
	mov	w28, 0
	sub	w0, w22, #1
	add	w22, w22, w27
	str	w0, [x29, 140]
	sub	w22, w22, #1
	adrp	x0, .LC161
	add	x0, x0, :lo12:.LC161
	str	x0, [x29, 112]
	b	.L2888
.L2897:
	mov	w25, 1
	b	.L2876
.L2886:
	ldrh	w12, [x21, x24]
	mov	w0, 65535
	cmp	w12, w0
	bne	.L2878
.L2884:
	add	w10, w10, 1
	and	w10, w10, 65535
.L2879:
	cmp	w25, w10
	bcs	.L2886
	add	w11, w28, 1
	and	w28, w11, 65535
.L2888:
	ldrb	w0, [x29, 153]
	cmp	w0, w28
	bls	.L2887
	sxtw	x24, w28
	mov	w10, 1
	add	x24, x24, 8
	lsl	x24, x24, 1
	b	.L2879
.L2878:
	ldrh	w3, [x26]
	cmp	w25, 3
	mul	w3, w3, w12
	add	w0, w3, w10
	bne	.L2880
	adrp	x1, .LANCHOR36
	ldrb	w1, [x1, #:lo12:.LANCHOR36]
	cbz	w1, .L2881
	adrp	x1, .LANCHOR84
	add	w0, w0, w22
	ldrb	w3, [x1, #:lo12:.LANCHOR84]
.L2911:
	orr	w3, w0, w3, lsl 24
	b	.L2882
.L2881:
	add	w3, w27, w3
	orr	w3, w3, w10, lsl 24
.L2882:
	str	w3, [x19, 40]
	mov	w1, 1
	stp	w10, w12, [x29, 104]
	mov	x0, x19
	str	w3, [x29, 136]
	bl	sblk_read_page
	ldr	w13, [x19, 52]
	ldp	w10, w12, [x29, 104]
	cmp	w13, 512
	ccmn	w13, #1, 4, ne
	ldr	w3, [x29, 136]
	bne	.L2884
	ldr	x1, [x19, 24]
	mov	w4, w13
	ldr	x0, [x19, 8]
	str	w10, [x29, 108]
	str	w13, [x29, 136]
	ldr	w2, [x1, 12]
	str	w2, [sp, 32]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w27
	ldr	w1, [x1]
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w12
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	ldr	x0, [x29, 112]
	bl	printf
	ldr	w13, [x29, 136]
	ldr	w10, [x29, 108]
	cmp	w13, 512
	bne	.L2884
.L2885:
	mov	w4, w10
	mov	w3, w28
	mov	w2, w27
	mov	w1, w20
	adrp	x24, .LANCHOR68
	adrp	x0, .LC162
	add	x0, x0, :lo12:.LC162
	bl	printf
	ldr	x0, [x19, 8]
	mov	w1, 0
	ldrb	w2, [x24, #:lo12:.LANCHOR68]
	adrp	x25, .LANCHOR19
	adrp	x26, .LC163
	add	x25, x25, :lo12:.LANCHOR19
	add	x26, x26, :lo12:.LC163
	lsl	w2, w2, 9
	bl	ftl_memset
	ldr	x0, [x19, 24]
	mov	w1, 0
	ldrb	w2, [x24, #:lo12:.LANCHOR68]
	lsl	w2, w2, 1
	bl	ftl_memset
.L2889:
	ldrh	w0, [x23, #:lo12:.LANCHOR100]
	cmp	w0, w27
	bls	.L2895
	lsl	w0, w27, 1
	str	w0, [x29, 140]
	ldr	x0, [x29, 120]
	mov	w22, 0
	add	x28, x0, :lo12:.LANCHOR89
	b	.L2896
.L2880:
	cmp	w25, 2
	bne	.L2883
	adrp	x1, .LANCHOR84
	ldrb	w3, [x1, #:lo12:.LANCHOR84]
	ldr	w1, [x29, 140]
	add	w0, w1, w0
	b	.L2911
.L2883:
	add	w3, w27, w3
	b	.L2882
.L2887:
	add	w8, w27, 1
	and	w27, w8, 65535
	b	.L2877
.L2894:
	ldr	w0, [x25]
	tbz	x0, 12, .L2890
	mov	w2, w22
	mov	w1, w27
	mov	x0, x26
	bl	printf
.L2890:
	ldrb	w1, [x28]
	adrp	x2, .LANCHOR117
	sxtw	x0, w22
	cbz	w1, .L2891
	add	x0, x0, 8
	ldrh	w1, [x2, #:lo12:.LANCHOR117]
	ldrh	w0, [x21, x0, lsl 1]
	mul	w0, w0, w1
	orr	w0, w0, w27
	str	w0, [x19, 40]
	mov	x0, x19
	bl	sblk_3d_tlc_dump_prog
.L2892:
	add	w22, w22, 1
	and	w22, w22, 65535
.L2896:
	ldrb	w0, [x29, 153]
	cmp	w0, w22
	bhi	.L2894
	add	w8, w27, 1
	and	w27, w8, 65535
	b	.L2889
.L2891:
	adrp	x1, .LANCHOR84
	add	x0, x0, 8
	ldrb	w1, [x1, #:lo12:.LANCHOR84]
	cmp	w1, 2
	bne	.L2893
	ldrh	w1, [x2, #:lo12:.LANCHOR117]
	ldrh	w0, [x21, x0, lsl 1]
	mul	w0, w0, w1
	ldr	w1, [x29, 140]
	orr	w0, w0, w1
	orr	w0, w0, 33554432
	str	w0, [x19, 40]
	mov	x0, x19
	bl	sblk_mlc_dump_prog
	b	.L2892
.L2893:
	ldrh	w1, [x21, x0, lsl 1]
	mov	w6, 1
	ldrh	w0, [x2, #:lo12:.LANCHOR117]
	mov	w5, 0
	ldrb	w4, [x24, #:lo12:.LANCHOR68]
	ldr	x3, [x19, 24]
	mul	w1, w1, w0
	adrp	x0, .LANCHOR31
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	orr	w1, w1, w27
	str	w1, [x19, 40]
	sub	w0, w0, w2
	lsl	w6, w6, w2
	ldr	x2, [x19, 8]
	sub	w6, w6, #1
	lsl	w7, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w7
	and	w0, w0, w6
	bl	flash_prog_page_en
	b	.L2892
.L2895:
	mov	x0, x19
	bl	zbuf_free
	adrp	x0, .LC164
	mov	w1, w20
	add	x0, x0, :lo12:.LC164
	bl	printf
.L2873:
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 224
	ret
	.size	ftl_dump_write_open_sblk, .-ftl_dump_write_open_sblk
	.section	.text.gc_ink_check_sblk,"ax",@progbits
	.align	2
	.global	gc_ink_check_sblk
	.type	gc_ink_check_sblk, %function
gc_ink_check_sblk:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR76
	add	x0, x19, :lo12:.LANCHOR76
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	ldrh	w1, [x0, 2110]
	ldr	x22, [x0, 2184]
	cmp	w1, 3
	bhi	.L2913
	adrp	x0, .L2915
	mov	x20, x19
	add	x0, x0, :lo12:.L2915
	ldrh	w0, [x0,w1,uxtw #1]
	adr	x1, .Lrtx2915
	add	x0, x1, w0, sxth #2
	br	x0
.Lrtx2915:
	.section	.rodata.gc_ink_check_sblk,"a",@progbits
	.align	0
	.align	2
.L2915:
	.2byte	(.L2914 - .Lrtx2915) / 4
	.2byte	(.L2916 - .Lrtx2915) / 4
	.2byte	(.L2917 - .Lrtx2915) / 4
	.2byte	(.L2918 - .Lrtx2915) / 4
	.section	.text.gc_ink_check_sblk
.L2914:
	adrp	x0, .LANCHOR113
	add	x24, x0, :lo12:.LANCHOR113
	ldrh	w0, [x0, #:lo12:.LANCHOR113]
	cmp	w0, 7
	bls	.L2912
	adrp	x0, .LANCHOR57
	ldrb	w0, [x0, #:lo12:.LANCHOR57]
	cmp	w0, 2
	bls	.L2912
	adrp	x21, .LANCHOR114
	add	x21, x21, :lo12:.LANCHOR114
	mov	w1, 0
	mov	x0, x21
	bl	_list_get_gc_head_node
	and	w0, w0, 65535
	mov	w23, 65535
	cmp	w0, w23
	beq	.L2912
	adrp	x22, .LANCHOR9
	ubfiz	x0, x0, 2, 16
	ldr	x1, [x22, #:lo12:.LANCHOR9]
	ldrh	w0, [x1, x0]
	and	w0, w0, 2047
	cmp	w0, 2
	bgt	.L2912
	add	x20, x19, :lo12:.LANCHOR76
	mov	w0, 1
	bl	buf_alloc
	str	x0, [x20, 2184]
	cbz	x0, .L2912
	mov	x2, x24
	mov	w1, 0
	mov	x0, x21
	bl	_list_pop_index_node
	and	w14, w0, 65535
	cmp	w14, w23
	bne	.L2922
	ldr	x0, [x20, 2184]
	bl	zbuf_free
	str	xzr, [x20, 2184]
.L2912:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L2922:
	add	x1, x20, 2162
	mov	w0, w14
	bl	ftl_get_blk_list_in_sblk
	strb	w0, [x20, 2155]
	mov	w0, 1
	strh	w0, [x20, 2110]
	ldr	x0, [x22, #:lo12:.LANCHOR9]
	strh	w14, [x20, 2146]
	ubfiz	x14, x14, 2, 16
	strh	wzr, [x20, 2148]
	ldrh	w1, [x0, x14]
	adrp	x0, .LANCHOR68
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	ldr	x0, [x20, 2184]
	lsl	w2, w2, 9
	tbz	x1, 0, .L2923
	mov	w1, 85
.L2938:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x0, [x0, 8]
	ldp	x29, x30, [sp], 80
	b	ftl_memset
.L2923:
	mov	w1, 170
	b	.L2938
.L2916:
	add	x20, x19, :lo12:.LANCHOR76
	mov	w1, 0
	ldrh	w0, [x20, 2146]
	bl	ftl_erase_sblk
	mov	w0, 2
	strh	w0, [x20, 2110]
	b	.L2912
.L2917:
	adrp	x21, .LANCHOR117
	mov	w24, 65280
	adrp	x23, .LANCHOR31
	add	x21, x21, :lo12:.LANCHOR117
	add	x23, x23, :lo12:.LANCHOR31
	mov	w19, 0
	movk	w24, 0x55aa, lsl 16
	bl	sblk_wait_write_queue_completed
.L2924:
	add	x0, x20, :lo12:.LANCHOR76
	ldrb	w1, [x0, 2155]
	cmp	w1, w19
	bhi	.L2926
	ldrh	w1, [x0, 2148]
	adrp	x2, .LANCHOR100
	add	w1, w1, 1
	ldrh	w2, [x2, #:lo12:.LANCHOR100]
	and	w1, w1, 65535
	strh	w1, [x0, 2148]
	cmp	w2, w1
	bhi	.L2912
	mov	w1, 3
	strh	wzr, [x0, 2148]
	strh	w1, [x0, 2110]
	b	.L2912
.L2926:
	add	x1, x0, x19, sxtw 1
	ldrh	w2, [x1, 2162]
	mov	w1, 65535
	cmp	w2, w1
	beq	.L2925
	ldrh	w0, [x0, 2148]
	mov	w6, 1
	ldrh	w1, [x21]
	mov	w5, 0
	ldr	x3, [x22, 24]
	madd	w1, w1, w2, w0
	ldr	x2, [x22, 8]
	mov	w0, 24
	stp	w1, w24, [x2]
	str	wzr, [x3]
	ldrb	w4, [x23]
	sub	w0, w0, w4
	lsl	w6, w6, w4
	adrp	x4, .LANCHOR68
	sub	w6, w6, #1
	ldrb	w4, [x4, #:lo12:.LANCHOR68]
	lsl	w7, w6, w0
	lsr	w0, w1, w0
	bic	w1, w1, w7
	and	w0, w0, w6
	bl	flash_prog_page_en
.L2925:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L2924
.L2918:
	adrp	x25, .LANCHOR117
	add	x19, x19, :lo12:.LANCHOR76
	add	x25, x25, :lo12:.LANCHOR117
	mov	w21, 0
	mov	w26, 65535
	bl	sblk_wait_write_queue_completed
.L2927:
	ldrb	w0, [x19, 2155]
	cmp	w0, w21
	bhi	.L2931
	ldrh	w0, [x19, 2148]
	adrp	x1, .LANCHOR100
	add	w0, w0, 1
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	and	w0, w0, 65535
	strh	w0, [x19, 2148]
	cmp	w1, w0
	bhi	.L2912
	ldr	x0, [x19, 2184]
	strh	wzr, [x19, 2110]
	bl	zbuf_free
	str	xzr, [x19, 2184]
	ldrh	w0, [x19, 2112]
	cmp	w0, 15
	bhi	.L2932
	add	w1, w0, 1
	add	x0, x19, x0, sxtw 1
	strh	w1, [x19, 2112]
	ldrh	w1, [x19, 2146]
	strh	w1, [x0, 2114]
.L2933:
	add	x19, x20, :lo12:.LANCHOR76
	adrp	x0, .LC165
	ldp	x21, x22, [sp, 32]
	add	x0, x0, :lo12:.LC165
	ldrh	w2, [x19, 2112]
	ldrh	w1, [x19, 2146]
	ldp	x23, x24, [sp, 48]
	ldp	x19, x20, [sp, 16]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	b	printf
.L2931:
	add	x24, x19, x21, sxtw 1
	add	x24, x24, 16
	ldrh	w0, [x24, 2146]
	cmp	w0, w26
	beq	.L2929
	ldrh	w1, [x19, 2148]
	ldrh	w23, [x25]
	madd	w23, w23, w0, w1
	mov	w1, 1
	str	w23, [x22, 40]
	mov	x0, x22
	bl	sblk_read_page
	ldr	x0, [x22, 8]
	ldr	w0, [x0]
	cmp	w23, w0
	beq	.L2929
	mov	w0, w23
	bl	ftl_mask_bad_block
	mov	w0, -1
	strh	w0, [x24, 2146]
.L2929:
	add	w21, w21, 1
	and	w21, w21, 65535
	b	.L2927
.L2932:
	ldrh	w0, [x19, 2146]
	bl	zftl_insert_free_list
	b	.L2933
.L2913:
	strh	wzr, [x0, 2110]
	b	.L2912
	.size	gc_ink_check_sblk, .-gc_ink_check_sblk
	.section	.text.flash_info_flush,"ax",@progbits
	.align	2
	.global	flash_info_flush
	.type	flash_info_flush, %function
flash_info_flush:
	stp	x29, x30, [sp, -112]!
	adrp	x0, .LANCHOR19
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	tbz	x0, 12, .L2940
	adrp	x2, .LANCHOR208
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR208
	mov	w1, 365
	add	x0, x0, :lo12:.LC91
	bl	printf
.L2940:
	adrp	x23, .LANCHOR209
	adrp	x20, .LANCHOR6
	mov	w2, 64
	mov	w1, 0
	ldr	x0, [x23, #:lo12:.LANCHOR209]
	adrp	x21, .LANCHOR210
	adrp	x22, .LANCHOR2
	adrp	x24, .LC167
	adrp	x25, .LANCHOR145
	add	x22, x22, :lo12:.LANCHOR2
	add	x24, x24, :lo12:.LC167
	add	x25, x25, :lo12:.LANCHOR145
	bl	ftl_memset
	add	x27, x21, :lo12:.LANCHOR210
	ldr	x1, [x20, #:lo12:.LANCHOR6]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC166
	add	x0, x0, :lo12:.LC166
	mov	w26, 0
	bl	rknand_print_hex
	ldr	x6, [x20, #:lo12:.LANCHOR6]
	add	x0, x6, 16
	ldr	w1, [x6, 8]
	bl	js_hash
	str	w0, [x6, 12]
.L2941:
	add	x28, x21, :lo12:.LANCHOR210
	ldrb	w4, [x21, #:lo12:.LANCHOR210]
	ldrh	w19, [x22]
	mov	x0, x24
	mov	w1, w4
	ldrh	w3, [x28, 2]
	stp	w3, w4, [x29, 104]
	mov	w2, w3
	bl	printf
	ldrh	w0, [x25]
	ldrh	w1, [x28, 2]
	sub	w0, w0, #1
	cmp	w1, w0
	ldp	w3, w4, [x29, 104]
	blt	.L2942
	ldr	x6, [x20, #:lo12:.LANCHOR6]
	ldrb	w7, [x28, 1]
	strh	wzr, [x28, 2]
	ldr	w0, [x6, 4]
	ldrh	w1, [x6, 16]
	add	w0, w0, 1
	str	w0, [x6, 4]
	ldrb	w0, [x21, #:lo12:.LANCHOR210]
	add	w1, w1, 1
	strb	w0, [x28, 1]
	mov	x0, x6
	strb	w7, [x21, #:lo12:.LANCHOR210]
	strh	w1, [x0, 16]!
	ldr	w1, [x6, 8]
	bl	js_hash
	ldrh	w19, [x22]
	str	w0, [x6, 12]
	mul	w19, w19, w7
.L2951:
	mov	w1, w19
	mov	w0, 0
	bl	flash_erase_block
	b	.L2943
.L2946:
	mov	w26, 1
	b	.L2941
.L2942:
	madd	w19, w19, w4, w3
	cbz	w1, .L2951
.L2943:
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	mov	w1, w19
	ldr	x3, [x23, #:lo12:.LANCHOR209]
	mov	w5, 1
	mov	w4, 4
	ldr	w0, [x2, 4]
	str	w0, [x3]
	mov	w0, 21321
	movk	w0, 0x5359, lsl 16
	str	w0, [x3, 4]
	mov	w0, 0
	bl	flash_prog_page_en
	cmn	w0, #1
	ldrh	w1, [x27, 2]
	add	w1, w1, 1
	strh	w1, [x27, 2]
	bne	.L2944
	mov	w1, w19
	adrp	x0, .LC168
	add	x0, x0, :lo12:.LC168
	bl	printf
	b	.L2941
.L2944:
	cbz	w26, .L2946
	ldp	x19, x20, [sp, 16]
	mov	w0, 0
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
	.size	flash_info_flush, .-flash_info_flush
	.section	.text.flash_info_blk_init,"ax",@progbits
	.align	2
	.global	flash_info_blk_init
	.type	flash_info_blk_init, %function
flash_info_blk_init:
	stp	x29, x30, [sp, -96]!
	adrp	x0, .LANCHOR19
	add	x29, sp, 0
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR6
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	tbz	x0, 12, .L2953
	ldr	x4, [x20, #:lo12:.LANCHOR6]
	adrp	x2, .LANCHOR211
	adrp	x0, .LC169
	mov	w3, 2048
	add	x2, x2, :lo12:.LANCHOR211
	mov	w1, 50
	add	x0, x0, :lo12:.LC169
	bl	printf
.L2953:
	adrp	x24, .LANCHOR2
	mov	w23, 21321
	add	x26, x24, :lo12:.LANCHOR2
	mov	w22, 4
	adrp	x21, .LANCHOR209
	movk	w23, 0x5359, lsl 16
.L2957:
	mov	w19, 0
.L2956:
	ldrh	w1, [x26]
	mov	w4, 4
	ldr	x3, [x21, #:lo12:.LANCHOR209]
	mov	w0, 0
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	add	x27, x21, :lo12:.LANCHOR209
	add	x25, x20, :lo12:.LANCHOR6
	madd	w1, w1, w22, w19
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2954
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	ldr	w0, [x2]
	cmp	w0, w23
	beq	.L2955
.L2954:
	add	w19, w19, 1
	cmp	w19, 4
	bne	.L2956
	add	w22, w22, 1
	cmp	w22, 16
	bne	.L2957
.L2983:
	mov	w0, -1
.L2952:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L2965:
	ldr	x0, [x25]
	ldr	w1, [x0]
	cmp	w1, w23
	bne	.L2966
	ldr	w22, [x0, 4]
.L2959:
	add	x23, x19, :lo12:.LANCHOR210
	ldrh	w0, [x24, #:lo12:.LANCHOR2]
	ldr	x3, [x21, #:lo12:.LANCHOR209]
	mov	w4, 4
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	ldrb	w1, [x23, 1]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2960
	ldr	x0, [x20, #:lo12:.LANCHOR6]
	mov	w1, 21321
	movk	w1, 0x5359, lsl 16
	ldr	w2, [x0]
	cmp	w2, w1
	bne	.L2960
	ldr	w1, [x0, 4]
	cmp	w22, w1
	bcs	.L2960
	ldrb	w1, [x0, 37]
	ldrb	w0, [x0, 36]
	strb	w1, [x19, #:lo12:.LANCHOR210]
	strb	w0, [x23, 1]
.L2960:
	ldrb	w1, [x19, #:lo12:.LANCHOR210]
	add	x22, x19, :lo12:.LANCHOR210
	ldr	x3, [x21, #:lo12:.LANCHOR209]
	mov	w4, 4
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	mov	w0, 0
	bl	flash_get_last_written_page
	and	w25, w0, 65535
	add	w1, w25, 1
	ldrb	w23, [x19, #:lo12:.LANCHOR210]
	strh	w1, [x22, 2]
	mov	w22, 0
	ldrh	w1, [x24, #:lo12:.LANCHOR2]
	mov	w24, 21321
	movk	w24, 0x5359, lsl 16
	mul	w23, w23, w1
	add	w23, w23, w0, sxth
.L2961:
	sub	w0, w25, w22
	sxth	w19, w0
	tbz	w19, #31, .L2964
	cmn	w19, #1
	bne	.L2963
	ldr	x0, [x20, #:lo12:.LANCHOR6]
	ldr	w1, [x0]
	adrp	x0, .LC170
	add	x0, x0, :lo12:.LC170
	bl	printf
	b	.L2983
.L2964:
	ldr	x3, [x21, #:lo12:.LANCHOR209]
	mov	w4, 4
	ldr	x2, [x20, #:lo12:.LANCHOR6]
	sub	w1, w23, w22
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	beq	.L2962
	ldr	x0, [x20, #:lo12:.LANCHOR6]
	ldr	w0, [x0]
	cmp	w0, w24
	beq	.L2963
.L2962:
	add	w22, w22, 1
	b	.L2961
.L2963:
	cmp	w22, 1
	bls	.L2967
	bl	flash_info_flush
.L2967:
	mov	w0, 0
	b	.L2952
.L2955:
	adrp	x19, .LANCHOR210
	add	x1, x19, :lo12:.LANCHOR210
	ldrb	w3, [x2, 37]
	mov	w4, 4
	ldrb	w0, [x2, 36]
	strb	w3, [x1, 1]
	ldrh	w1, [x26]
	ldr	x3, [x27]
	strb	w0, [x19, #:lo12:.LANCHOR210]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_read_page_en
	cmn	w0, #1
	bne	.L2965
.L2966:
	mov	w22, 0
	b	.L2959
	.size	flash_info_blk_init, .-flash_info_blk_init
	.section	.text.nand_flash_init,"ax",@progbits
	.align	2
	.global	nand_flash_init
	.type	nand_flash_init, %function
nand_flash_init:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR19
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	str	x27, [sp, 80]
	tbz	x0, 12, .L2985
	adrp	x2, .LANCHOR212
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR212
	mov	w1, 3451
	add	x0, x0, :lo12:.LC91
	bl	printf
.L2985:
	adrp	x0, .LANCHOR170
	adrp	x24, .LANCHOR21
	adrp	x22, .LANCHOR47
	add	x25, x22, :lo12:.LANCHOR47
	str	wzr, [x0, #:lo12:.LANCHOR170]
	mov	x0, x19
	bl	nandc_init
	adrp	x19, .LANCHOR32
	add	x0, x19, :lo12:.LANCHOR32
	str	x0, [x24, #:lo12:.LANCHOR21]
	adrp	x0, .LANCHOR23
	adrp	x23, .LANCHOR31
	mov	x26, x25
	mov	w1, 1
	mov	w20, 0
	strb	w1, [x0, #:lo12:.LANCHOR23]
	mov	w27, 44
	mov	w0, 3
	mov	w2, 8
	strb	w0, [x23, #:lo12:.LANCHOR31]
	mov	w1, 0
	adrp	x0, .LANCHOR29
	add	x0, x0, :lo12:.LANCHOR29
	bl	ftl_memset
	mov	w2, 32
	mov	w1, 0
	adrp	x0, .LANCHOR146
	add	x0, x0, :lo12:.LANCHOR146
	bl	ftl_memset
.L2991:
	mov	x1, x25
	mov	w0, w20
	bl	flash_read_id
	cbnz	w20, .L2986
	ldrb	w0, [x26]
	sub	w0, w0, #1
	and	w0, w0, 255
	cmp	w0, 253
	bls	.L2987
.L2989:
	mov	w22, -2
.L2984:
	mov	w0, w22
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L2987:
	ldrb	w0, [x26, 1]
	cmp	w0, 255
	beq	.L2989
.L2986:
	ldrb	w0, [x25]
	cmp	w0, 181
	bne	.L2990
	strb	w27, [x25]
.L2990:
	add	w20, w20, 1
	add	x25, x25, 8
	and	w20, w20, 255
	cmp	w20, 4
	bne	.L2991
	adrp	x0, .LANCHOR213
	add	x8, x0, :lo12:.LANCHOR213
	add	x8, x8, 1
	mov	x7, x0
	add	x12, x22, :lo12:.LANCHOR47
	mov	x10, 0
.L2994:
	ldrb	w2, [x8, -1]
	mov	w11, w10
	lsl	x25, x10, 5
	mov	x1, x12
	mov	x0, x8
	bl	flash_mem_cmp8
	cbnz	w0, .L2992
	add	x0, x7, :lo12:.LANCHOR213
	ubfiz	x11, x11, 5, 32
	add	x25, x0, x25
	add	x0, x0, x11
	adrp	x1, .LANCHOR214
	add	x4, x1, :lo12:.LANCHOR214
	ldrb	w3, [x0, 22]
	mov	x0, 0
.L2993:
	lsl	x5, x0, 5
	mov	w2, w0
	ldrb	w5, [x5, x4]
	cmp	w5, w3
	beq	.L2995
	add	x0, x0, 1
	cmp	x0, 4
	bne	.L2993
	mov	w2, w0
.L2995:
	ubfiz	x0, x2, 5, 32
	add	x1, x1, :lo12:.LANCHOR214
	add	x1, x1, x0
	mov	w2, 32
	adrp	x0, .LANCHOR25
	add	x20, x19, :lo12:.LANCHOR32
	add	x0, x0, :lo12:.LANCHOR25
	adrp	x26, .LANCHOR27
	bl	ftl_memcpy
	mov	w2, 32
	mov	x1, x25
	mov	x0, x20
	bl	ftl_memcpy
	ldrb	w0, [x26, #:lo12:.LANCHOR27]
	cmp	w0, 8
	bhi	.L2996
	ldrb	w0, [x20, 20]
	cmp	w0, 60
	bls	.L2996
	mov	w0, 60
	strb	w0, [x20, 20]
.L2996:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3026
	adrp	x2, .LANCHOR212
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR212
	mov	w1, 3478
	add	x0, x0, :lo12:.LC91
	bl	printf
.L3026:
	ldr	x0, [x24, #:lo12:.LANCHOR21]
	ldrh	w0, [x0, 10]
	cmp	w0, 1023
	bls	.L2997
	mov	w0, 2
	strb	w0, [x23, #:lo12:.LANCHOR31]
.L2997:
	mov	w0, 16384
	bl	ftl_malloc
	adrp	x1, .LANCHOR174
	adrp	x23, .LANCHOR6
	add	x20, x19, :lo12:.LANCHOR32
	adrp	x25, .LANCHOR48
	str	x0, [x1, #:lo12:.LANCHOR174]
	mov	w0, 16384
	bl	ftl_malloc
	adrp	x1, .LANCHOR164
	str	x0, [x1, #:lo12:.LANCHOR164]
	mov	w0, 2048
	bl	ftl_malloc
	str	x0, [x23, #:lo12:.LANCHOR6]
	mov	w0, 64
	bl	ftl_malloc
	adrp	x1, .LANCHOR173
	str	x0, [x1, #:lo12:.LANCHOR173]
	mov	w0, 64
	bl	ftl_malloc
	adrp	x1, .LANCHOR166
	str	x0, [x1, #:lo12:.LANCHOR166]
	mov	w0, 64
	bl	ftl_malloc
	adrp	x1, .LANCHOR209
	str	x0, [x1, #:lo12:.LANCHOR209]
	adrp	x0, .LANCHOR215
	strb	wzr, [x0, #:lo12:.LANCHOR215]
	bl	flash_die_info_init
	ldrb	w0, [x20, 18]
	bl	flash_lsb_page_tbl_build
	ldrb	w0, [x20, 20]
	adrp	x20, .LANCHOR172
	bl	nandc_bch_sel
	str	xzr, [x20, #:lo12:.LANCHOR172]
	ldr	x2, [x24, #:lo12:.LANCHOR21]
	ldrh	w0, [x2, 16]
	ubfx	x1, x0, 8, 3
	strb	w1, [x25, #:lo12:.LANCHOR48]
	adrp	x1, .LANCHOR185
	ubfx	x3, x0, 3, 1
	strb	w3, [x1, #:lo12:.LANCHOR185]
	adrp	x1, .LANCHOR44
	ubfx	x3, x0, 4, 1
	strb	w3, [x1, #:lo12:.LANCHOR44]
	adrp	x1, .LANCHOR89
	ubfx	x3, x0, 12, 1
	strb	w3, [x1, #:lo12:.LANCHOR89]
	adrp	x1, .LANCHOR86
	ubfx	x3, x0, 13, 1
	strb	w3, [x1, #:lo12:.LANCHOR86]
	adrp	x1, .LANCHOR35
	ubfx	x3, x0, 11, 1
	strb	w3, [x1, #:lo12:.LANCHOR35]
	adrp	x3, .LANCHOR130
	ldrb	w1, [x2, 31]
	ldrb	w2, [x2, 28]
	ubfx	x4, x1, 1, 1
	strb	w4, [x3, #:lo12:.LANCHOR130]
	adrp	x3, .LANCHOR216
	ubfx	x4, x1, 2, 1
	strb	w4, [x3, #:lo12:.LANCHOR216]
	adrp	x3, .LANCHOR1
	ubfx	x4, x0, 14, 1
	lsr	w0, w0, 15
	strb	w4, [x3, #:lo12:.LANCHOR1]
	adrp	x3, .LANCHOR87
	strb	w0, [x3, #:lo12:.LANCHOR87]
	adrp	x0, .LANCHOR0
	ubfx	x3, x1, 3, 1
	ubfx	x1, x1, 4, 1
	strb	w2, [x0, #:lo12:.LANCHOR0]
	adrp	x0, .LANCHOR30
	strb	w3, [x0, #:lo12:.LANCHOR30]
	adrp	x0, .LANCHOR36
	strb	w1, [x0, #:lo12:.LANCHOR36]
	adrp	x1, .LANCHOR22
	mov	w0, 60
	strb	w0, [x1, #:lo12:.LANCHOR22]
	ldrb	w0, [x26, #:lo12:.LANCHOR27]
	cmp	w0, 9
	bne	.L2998
	mov	w3, 70
	strb	w3, [x1, #:lo12:.LANCHOR22]
.L2998:
	add	x1, x19, :lo12:.LANCHOR32
	adrp	x24, .LANCHOR24
	strb	w2, [x24, #:lo12:.LANCHOR24]
	ldrb	w2, [x1, 31]
	tbz	x2, 0, .L2999
	ldrb	w1, [x1, 29]
	cbz	w1, .L3000
	mov	w1, 2
.L3058:
	strb	w1, [x24, #:lo12:.LANCHOR24]
.L2999:
	cmp	w0, 8
	bne	.L3001
	ldrb	w0, [x22, #:lo12:.LANCHOR47]
	mov	w1, 137
	cmp	w0, 44
	ccmp	w0, w1, 4, ne
	bne	.L3001
	add	x0, x19, :lo12:.LANCHOR32
	ldrb	w0, [x0, 28]
	cmp	w0, 3
	bne	.L3001
	strb	wzr, [x24, #:lo12:.LANCHOR24]
.L3001:
	bl	nand_flash_exit_boot_rom_slc_mode
	adrp	x27, .LANCHOR16
	add	x1, x19, :lo12:.LANCHOR32
	ldrb	w0, [x1, 19]
	ldrh	w1, [x1, 16]
	strb	w0, [x27, #:lo12:.LANCHOR16]
	tbz	x1, 6, .L3003
	sub	w1, w0, #17
	and	w1, w1, 255
	cmp	w1, 2
	ccmp	w0, 21, 4, hi
	bne	.L3004
	adrp	x1, micron_read_retrial
	add	x1, x1, :lo12:micron_read_retrial
	str	x1, [x20, #:lo12:.LANCHOR172]
	cmp	w0, 21
	adrp	x0, .LANCHOR167
	beq	.L3005
	mov	w1, 15
.L3060:
	strb	w1, [x0, #:lo12:.LANCHOR167]
.L3003:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3014
	adrp	x2, .LANCHOR212
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR212
	mov	w1, 3571
	add	x0, x0, :lo12:.LC91
	bl	printf
.L3014:
	adrp	x26, .LANCHOR26
	ldrb	w0, [x25, #:lo12:.LANCHOR48]
	strb	wzr, [x26, #:lo12:.LANCHOR26]
	tbz	x0, 0, .L3015
	ldrb	w0, [x22, #:lo12:.LANCHOR47]
	cmp	w0, 155
	beq	.L3016
	mov	w0, 4
	bl	flash_set_interface_mode
	mov	w0, 4
	bl	nandc_set_if_mode
.L3016:
	mov	w0, 1
	bl	flash_set_interface_mode
	mov	w0, 1
.L3062:
	bl	nandc_set_if_mode
	bl	flash_info_blk_init
	mov	w22, w0
	cmn	w0, #1
	bne	.L3018
	ldr	x0, [x23, #:lo12:.LANCHOR6]
	mov	w1, 17
	strb	w1, [x0, 32]
	adrp	x0, .LANCHOR33
	strb	wzr, [x0, #:lo12:.LANCHOR33]
	mov	w0, 0
	bl	zftl_flash_exit_slc_mode
	b	.L2984
.L2992:
	add	x10, x10, 1
	add	x8, x8, 32
	cmp	x10, 49
	bne	.L2994
	b	.L2989
.L3000:
	mov	w1, 3
	b	.L3058
.L3005:
	mov	w1, 4
	b	.L3060
.L3004:
	sub	w1, w0, #65
	cmp	w0, 33
	and	w1, w1, 255
	ccmp	w1, 1, 0, ne
	bhi	.L3007
	adrp	x0, toshiba_read_retrial
	add	x0, x0, :lo12:toshiba_read_retrial
	str	x0, [x20, #:lo12:.LANCHOR172]
	adrp	x0, .LANCHOR18
	mov	w1, 4
	strb	w1, [x0, #:lo12:.LANCHOR18]
.L3064:
	mov	w1, 7
.L3063:
	adrp	x0, .LANCHOR167
	b	.L3060
.L3007:
	sub	w2, w0, #34
	sub	w1, w0, #67
	and	w2, w2, 255
	and	w1, w1, 255
	cmp	w2, 1
	ccmp	w1, 1, 0, hi
	bhi	.L3008
	adrp	x2, toshiba_read_retrial
	add	x2, x2, :lo12:toshiba_read_retrial
	str	x2, [x20, #:lo12:.LANCHOR172]
	cmp	w0, 35
	mov	w2, 68
	ccmp	w0, w2, 4, ne
	adrp	x0, .LANCHOR167
	beq	.L3009
	mov	w2, 7
.L3059:
	strb	w2, [x0, #:lo12:.LANCHOR167]
	cmp	w1, 1
	adrp	x0, .LANCHOR18
	bhi	.L3011
	mov	w1, 4
.L3061:
	strb	w1, [x0, #:lo12:.LANCHOR18]
	b	.L3003
.L3009:
	mov	w2, 17
	b	.L3059
.L3011:
	mov	w1, 5
	b	.L3061
.L3008:
	sub	w1, w0, #36
	and	w1, w1, 255
	cmp	w1, 1
	bhi	.L3012
	adrp	x0, toshiba_3d_read_retrial
	add	x0, x0, :lo12:toshiba_3d_read_retrial
	str	x0, [x20, #:lo12:.LANCHOR172]
	b	.L3064
.L3012:
	cmp	w0, 50
	bne	.L3013
	adrp	x0, samsung_read_retrial
	mov	w1, 25
	add	x0, x0, :lo12:samsung_read_retrial
	str	x0, [x20, #:lo12:.LANCHOR172]
	b	.L3063
.L3013:
	cmp	w0, 81
	bne	.L3003
	adrp	x0, ymtc_3d_read_retrial
	add	x0, x0, :lo12:ymtc_3d_read_retrial
	str	x0, [x20, #:lo12:.LANCHOR172]
	adrp	x0, .LANCHOR167
	mov	w1, 7
	strb	w1, [x0, #:lo12:.LANCHOR167]
	adrp	x0, .LANCHOR50
	strb	wzr, [x0, #:lo12:.LANCHOR50]
	b	.L3003
.L3015:
	mov	w0, 4
	b	.L3062
.L3018:
	add	x19, x19, :lo12:.LANCHOR32
	ldrb	w0, [x19, 7]
	cmp	w0, 9
	bne	.L3019
	ldr	x0, [x23, #:lo12:.LANCHOR6]
	ldrb	w0, [x0, 20]
	cmp	w0, 1
	beq	.L3019
	strb	wzr, [x24, #:lo12:.LANCHOR24]
.L3019:
	ldrb	w0, [x27, #:lo12:.LANCHOR16]
	sub	w0, w0, #1
	and	w0, w0, 255
	cmp	w0, 7
	bhi	.L3020
	adrp	x0, hynix_read_retrial
	add	x0, x0, :lo12:hynix_read_retrial
	str	x0, [x20, #:lo12:.LANCHOR172]
.L3020:
	ldrb	w0, [x25, #:lo12:.LANCHOR48]
	tbz	x0, 2, .L3022
	ldr	x0, [x23, #:lo12:.LANCHOR6]
	ldrb	w0, [x0, 19]
	cbz	w0, .L3022
	adrp	x0, .LANCHOR210
	ldrb	w1, [x0, #:lo12:.LANCHOR210]
	adrp	x0, .LANCHOR2
	ldrh	w0, [x0, #:lo12:.LANCHOR2]
	mul	w1, w1, w0
	mov	w0, 0
	bl	flash_ddr_para_scan
	ldrb	w0, [x26, #:lo12:.LANCHOR26]
	cbnz	w0, .L3022
	ldr	x0, [x23, #:lo12:.LANCHOR6]
	strb	wzr, [x0, 19]
	bl	flash_info_flush
.L3022:
	bl	nand_flash_exit_boot_rom_slc_mode
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3024
	adrp	x2, .LANCHOR212
	adrp	x0, .LC91
	add	x2, x2, :lo12:.LANCHOR212
	mov	w1, 3674
	add	x0, x0, :lo12:.LC91
	bl	printf
.L3024:
	bl	nand_flash_print_info
	mov	w22, 0
	b	.L2984
	.size	nand_flash_init, .-nand_flash_init
	.section	.text.ftl_sysblk_dump,"ax",@progbits
	.align	2
	.global	ftl_sysblk_dump
	.type	ftl_sysblk_dump, %function
ftl_sysblk_dump:
	sub	sp, sp, #144
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x19, x20, [sp, 64]
	mov	w20, 0
	stp	x23, x24, [sp, 96]
	and	w23, w0, 65535
	stp	x25, x26, [sp, 112]
	mov	w0, 1
	stp	x27, x28, [sp, 128]
	adrp	x25, .LANCHOR100
	stp	x21, x22, [sp, 80]
	bl	buf_alloc
	ldr	x28, [x0, 8]
	adrp	x26, .LANCHOR117
	adrp	x27, .LANCHOR68
	mov	x24, x0
	add	x25, x25, :lo12:.LANCHOR100
	add	x26, x26, :lo12:.LANCHOR117
	add	x27, x27, :lo12:.LANCHOR68
	mov	w19, 0
.L3066:
	ldrh	w0, [x25]
	cmp	w0, w19
	bhi	.L3068
	add	x1, x28, 704
	mov	w3, 32
	mov	w2, 4
	adrp	x0, .LC171
	add	x0, x0, :lo12:.LC171
	bl	rknand_print_hex
	mov	x0, x24
	bl	zbuf_free
	cbz	w20, .L3069
	adrp	x1, .LANCHOR217
	adrp	x0, .LC0
	mov	w2, 1624
	add	x1, x1, :lo12:.LANCHOR217
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3069:
	mov	w0, w20
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 144
	ret
.L3068:
	ldrh	w21, [x26]
	ldrb	w3, [x27]
	ldr	x1, [x24, 8]
	ldr	x2, [x24, 24]
	madd	w21, w21, w23, w19
	mov	w0, w21
	bl	ftl_read_ppa_page
	mov	w22, w0
	ldr	x1, [x24, 24]
	mov	w4, w0
	ldr	x0, [x24, 8]
	mov	w3, w21
	ldr	w2, [x1, 12]
	str	w2, [sp, 32]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w19
	add	w19, w19, 1
	ldr	w1, [x1]
	and	w19, w19, 65535
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w23
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	adrp	x0, .LC161
	add	x0, x0, :lo12:.LC161
	bl	printf
	cmp	w22, 512
	ccmn	w22, #1, 4, ne
	csinc	w20, w20, wzr, ne
	b	.L3066
	.size	ftl_sysblk_dump, .-ftl_sysblk_dump
	.section	.text.ftl_open_sblk_recovery,"ax",@progbits
	.align	2
	.global	ftl_open_sblk_recovery
	.type	ftl_open_sblk_recovery, %function
ftl_open_sblk_recovery:
	stp	x29, x30, [sp, -368]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR19
	stp	x19, x20, [sp, 16]
	mov	x19, x0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	str	x1, [x29, 144]
	tbz	x0, 12, .L3077
	ldrh	w1, [x19, 2]
	adrp	x0, .LC172
	add	x0, x0, :lo12:.LC172
	bl	printf
.L3077:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3078
	ldrb	w1, [x19, 5]
	adrp	x0, .LC173
	add	x0, x0, :lo12:.LC173
	bl	printf
.L3078:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3079
	ldrh	w1, [x19]
	adrp	x0, .LC174
	add	x0, x0, :lo12:.LC174
	bl	printf
.L3079:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3080
	ldrh	w2, [x19, 18]
	adrp	x0, .LC175
	ldrh	w1, [x19, 16]
	add	x0, x0, :lo12:.LC175
	bl	printf
.L3080:
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3081
	ldrb	w1, [x19, 9]
	adrp	x0, .LC176
	add	x0, x0, :lo12:.LC176
	bl	printf
.L3081:
	ldrh	w0, [x19, 10]
	strh	w0, [x19, 14]
	adrp	x0, .LANCHOR8
	ldrh	w1, [x19]
	ldrh	w0, [x0, #:lo12:.LANCHOR8]
	cmp	w1, w0
	bcs	.L3076
	mov	w0, 1
	adrp	x22, .LANCHOR68
	bl	buf_alloc
	mov	x20, x0
	ldrb	w0, [x22, #:lo12:.LANCHOR68]
	add	x26, x29, 176
	mov	w2, 64
	mov	w27, 2
	ldr	x1, [x20, 8]
	sub	w0, w0, #2
	lsl	w0, w0, 7
	add	x0, x1, x0, sxtw 2
	mov	w1, 255
	str	x0, [x29, 152]
	mov	x0, x26
	bl	ftl_memset
	mov	w2, 64
	mov	w1, 255
	add	x0, x29, 240
	bl	ftl_memset
	mov	w2, 64
	mov	w1, 255
	add	x0, x29, 304
	bl	ftl_memset
	ldrb	w23, [x19, 5]
	adrp	x0, .LANCHOR117
	ldrh	w24, [x19, 2]
	add	x0, x0, :lo12:.LANCHOR117
	str	x0, [x29, 128]
.L3083:
	adrp	x25, .LANCHOR100
	ldrh	w0, [x25, #:lo12:.LANCHOR100]
	cmp	w0, w24
	bhi	.L3098
.L3086:
	ldrh	w0, [x19, 10]
	ldrh	w1, [x19, 6]
	ldrh	w2, [x25, #:lo12:.LANCHOR100]
	add	w1, w1, w0
	ldrb	w0, [x19, 9]
	strh	w24, [x19, 2]
	strb	w23, [x19, 5]
	mul	w0, w0, w2
	cmp	w1, w0
	beq	.L3099
	adrp	x1, .LANCHOR218
	adrp	x0, .LC0
	mov	w2, 1807
	add	x1, x1, :lo12:.LANCHOR218
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3099:
	adrp	x2, .LANCHOR123
	ldrh	w3, [x19, 10]
	mov	w0, 0
	mov	w1, 0
	ldr	x4, [x2, #:lo12:.LANCHOR123]
	str	x2, [x29, 152]
.L3100:
	cmp	w1, w3
	bcc	.L3102
	ldrb	w23, [x19, 9]
	adrp	x24, .LANCHOR11
	ldrh	w1, [x25, #:lo12:.LANCHOR100]
	madd	w23, w23, w1, w0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	sub	w23, w23, w3
	and	w23, w23, 65535
	tbz	x0, 12, .L3103
	ldrh	w1, [x19]
	ldr	x2, [x24, #:lo12:.LANCHOR11]
	ubfiz	x0, x1, 1, 16
	ldrh	w3, [x2, x0]
	adrp	x0, .LC179
	mov	w2, w23
	add	x0, x0, :lo12:.LC179
	bl	printf
.L3103:
	ldr	x0, [x24, #:lo12:.LANCHOR11]
	ldrh	w1, [x19]
	strh	w23, [x0, x1, lsl 1]
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 14, .L3104
	ldp	w1, w2, [x29, 176]
	adrp	x0, .LC180
	ldp	w3, w4, [x29, 184]
	add	x0, x0, :lo12:.LC180
	bl	printf
.L3104:
	ldr	x0, [x20, 8]
	mov	w1, 0
	ldrb	w2, [x22, #:lo12:.LANCHOR68]
	adrp	x28, .LANCHOR85
	mov	x24, 0
	lsl	w2, w2, 9
	bl	ftl_memset
	adrp	x0, .LC182
	add	x0, x0, :lo12:.LC182
	str	x0, [x29, 136]
	add	x0, x28, :lo12:.LANCHOR85
	str	x0, [x29, 128]
.L3105:
	ldrb	w0, [x28, #:lo12:.LANCHOR85]
	add	x1, x28, :lo12:.LANCHOR85
	str	w24, [x29, 168]
	mul	w0, w0, w27
	cmp	w24, w0
	bcc	.L3116
	adrp	x24, .LC183
	adrp	x23, .LC182
	add	x24, x24, :lo12:.LC183
	add	x23, x23, :lo12:.LC182
	mov	x28, 0
	str	x1, [x29, 160]
.L3117:
	ldr	x0, [x29, 160]
	ldrb	w0, [x0]
	mul	w0, w0, w27
	cmp	w0, w28
	bhi	.L3123
	mov	x0, x20
	bl	zbuf_free
	ldrh	w1, [x19, 12]
	ldrh	w0, [x25, #:lo12:.LANCHOR100]
	ldrb	w2, [x19, 9]
	madd	w0, w0, w2, w1
	mov	x1, -4
	add	x0, x1, x0, sxtw 2
	ldr	x1, [x29, 152]
	ldr	x1, [x1, #:lo12:.LANCHOR123]
	ldr	w0, [x1, x0]
	cmn	w0, #1
	beq	.L3124
	adrp	x1, .LANCHOR218
	adrp	x0, .LC0
	mov	w2, 1922
	add	x1, x1, :lo12:.LANCHOR218
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3124:
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bne	.L3076
	mov	x0, x19
	bl	ftl_write_last_log_page
.L3076:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 368
	ret
.L3098:
	ldrb	w23, [x19, 5]
	adrp	x0, .LANCHOR197
	add	x0, x0, :lo12:.LANCHOR197
	str	x0, [x29, 136]
.L3084:
	ldrb	w0, [x19, 9]
	cmp	w0, w23
	bhi	.L3097
	add	w24, w24, 1
	strb	wzr, [x19, 5]
	and	w24, w24, 65535
	b	.L3083
.L3097:
	add	x0, x19, x23, sxtw 1
	ldrh	w0, [x0, 16]
	str	w0, [x29, 168]
	mov	w0, 65535
	ldr	w1, [x29, 168]
	cmp	w1, w0
	beq	.L3085
	ldr	x0, [x29, 128]
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	ldr	x2, [x20, 24]
	ldrh	w0, [x0]
	madd	w0, w0, w1, w24
	ldr	x1, [x20, 8]
	str	w0, [x29, 160]
	bl	ftl_read_ppa_page
	mov	w28, w0
	cmp	w0, 512
	beq	.L3086
	cmn	w0, #1
	beq	.L3087
	ldr	x0, [x20, 24]
	ldr	w1, [x0]
	cmn	w1, #1
	bne	.L3087
	ldr	w0, [x0, 4]
	cmn	w0, #1
	bne	.L3087
	ldr	x0, [x20, 8]
	ldr	w0, [x0]
	cmn	w0, #1
	beq	.L3086
.L3087:
	ldr	x1, [x29, 136]
	mov	w0, 1
	strb	w0, [x1]
	ldrb	w0, [x19, 9]
	ldrh	w1, [x19, 10]
	madd	w0, w0, w24, w23
	cmp	w1, w0
	beq	.L3088
	adrp	x1, .LANCHOR218
	adrp	x0, .LC0
	mov	w2, 1699
	add	x1, x1, :lo12:.LANCHOR218
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3088:
	ldrh	w0, [x19, 10]
	ldrh	w1, [x19, 6]
	ldrb	w2, [x19, 9]
	add	w1, w1, w0
	ldrh	w0, [x25, #:lo12:.LANCHOR100]
	mul	w0, w0, w2
	cmp	w1, w0
	beq	.L3089
	adrp	x1, .LANCHOR218
	adrp	x0, .LC0
	mov	w2, 1700
	add	x1, x1, :lo12:.LANCHOR218
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3089:
	ldrb	w0, [x22, #:lo12:.LANCHOR68]
	cmp	w0, 8
	bls	.L3090
	ldr	x6, [x20, 24]
	mov	w1, 15555
	movk	w1, 0xf55f, lsl 16
	ldr	w0, [x6]
	cmp	w0, w1
	beq	.L3090
	cmn	w28, #1
	beq	.L3092
	ldr	w0, [x6, 4]
	cmn	w0, #1
	beq	.L3093
	ldr	w1, [x6, 16]
	mov	w0, 21320
	movk	w0, 0x4841, lsl 16
	cmp	w1, w0
	bne	.L3093
	ldr	x0, [x29, 152]
	mov	w1, 1024
	bl	js_hash
	ldr	w1, [x6, 20]
	cmp	w1, w0
	beq	.L3093
	ldr	w3, [x29, 160]
	mov	w5, w0
	ldr	w1, [x29, 168]
	mov	w4, w28
	mov	w2, w24
	adrp	x0, .LC177
	add	x0, x0, :lo12:.LC177
	bl	printf
	ldr	x1, [x29, 152]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC178
	add	x0, x0, :lo12:.LC178
	bl	rknand_print_hex
	ldr	x1, [x20, 24]
	adrp	x0, .LC144
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	mov	w2, 4
	add	x0, x0, :lo12:.LC144
	lsr	w3, w3, 1
	bl	rknand_print_hex
.L3092:
	ldrh	w0, [x19, 6]
	mov	w27, 4
	sub	w0, w0, #1
	strh	w0, [x19, 6]
	ldrh	w0, [x19, 10]
	add	w0, w0, 1
	strh	w0, [x19, 10]
.L3085:
	add	w23, w23, 1
	and	w23, w23, 65535
	b	.L3084
.L3090:
	cmn	w28, #1
	beq	.L3092
.L3093:
	ldr	x1, [x20, 24]
	ldr	w0, [x1, 4]
	cmn	w0, #1
	beq	.L3092
	ldr	w1, [x1]
	mov	w2, 15555
	movk	w2, 0xf55f, lsl 16
	cmp	w1, w2
	beq	.L3092
	bl	lpa_hash_get_ppa
	ldr	x1, [x29, 144]
	cbz	x1, .L3095
	ldr	x3, [x20, 24]
	ldr	w1, [x3, 8]
	cmp	w0, w1
	beq	.L3095
	cmn	w0, #1
	beq	.L3095
	adrp	x4, .LANCHOR31
	adrp	x5, .LANCHOR80
	mov	w28, 24
	mov	w27, 1
	ldrb	w1, [x4, #:lo12:.LANCHOR31]
	ldrh	w6, [x5, #:lo12:.LANCHOR80]
	sub	w1, w28, w1
	sub	w1, w1, w6
	lsr	w2, w0, w6
	adrp	x6, .LANCHOR81
	lsl	w1, w27, w1
	sub	w1, w1, #1
	and	w1, w1, w2
	ldrb	w2, [x6, #:lo12:.LANCHOR81]
	udiv	w1, w1, w2
	ldr	x2, [x29, 144]
	ldrh	w2, [x2]
	cmp	w2, w1, uxth
	bne	.L3095
	ldr	w8, [x3]
	adrp	x7, .LANCHOR192
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	add	x2, x7, :lo12:.LANCHOR192
	ldr	x1, [x20, 8]
	str	w8, [x29, 124]
	str	x7, [x29, 168]
	stp	x6, x4, [x29, 96]
	str	x5, [x29, 112]
	bl	ftl_read_ppa_page
	ldr	x7, [x29, 168]
	ldr	w8, [x29, 124]
	ldr	w0, [x7, #:lo12:.LANCHOR192]
	cmp	w8, w0
	bhi	.L3095
	ldr	x0, [x20, 24]
	ldr	w0, [x0, 8]
	cmn	w0, #1
	beq	.L3092
	ldp	x6, x4, [x29, 96]
	ldr	x5, [x29, 112]
	ldrb	w2, [x4, #:lo12:.LANCHOR31]
	ldrh	w1, [x5, #:lo12:.LANCHOR80]
	sub	w28, w28, w2
	sub	w28, w28, w1
	lsr	w0, w0, w1
	lsl	w27, w27, w28
	sub	w27, w27, #1
	and	w27, w27, w0
	ldrb	w0, [x6, #:lo12:.LANCHOR81]
	udiv	w0, w27, w0
	bl	ftl_vpn_decrement
	b	.L3092
.L3102:
	ldrh	w2, [x19, 12]
	add	w2, w2, w1
	ldr	w2, [x4, x2, lsl 2]
	cmn	w2, #1
	beq	.L3101
	add	w23, w0, 1
	and	w0, w23, 65535
.L3101:
	add	w1, w1, 1
	b	.L3100
.L3116:
	ldr	w0, [x26, x24, lsl 2]
	cmn	w0, #1
	bne	.L3106
.L3110:
	adrp	x0, .LANCHOR69
	ldr	x1, [x20, 24]
	mov	w23, -1
	mov	x2, 0
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w0, [x0, 8]
	stp	w0, w23, [x1]
	ldr	x0, [x20, 8]
	stp	w23, wzr, [x1, 8]
	str	wzr, [x1, 16]!
	str	wzr, [x0]
	mov	w0, 2
	bl	ftl_debug_info_fill
.L3107:
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bls	.L3112
	add	x0, x21, :lo12:.LANCHOR19
	str	x0, [x29, 160]
	add	x0, x22, :lo12:.LANCHOR68
	str	x0, [x29, 144]
.L3176:
	mov	x0, x19
	bl	ftl_get_new_free_page
	mov	w4, w0
	ldr	x0, [x29, 160]
	ldr	w0, [x0]
	tbz	x0, 14, .L3113
	ldrh	w0, [x19, 12]
	mov	w1, w4
	ldrh	w3, [x19, 10]
	str	w4, [x29, 124]
	add	w3, w3, w0
	ldr	x0, [x20, 24]
	sub	w3, w3, #1
	ldr	w2, [x0, 4]
	ldr	x0, [x29, 136]
	bl	printf
	ldr	w4, [x29, 124]
.L3113:
	ldr	x0, [x29, 128]
	ldr	w2, [x29, 168]
	ldrh	w1, [x19, 6]
	ldrb	w0, [x0]
	mul	w0, w0, w27
	add	w0, w0, 1
	sub	w0, w0, w2
	cmp	w1, w0
	bls	.L3112
	ldr	x0, [x29, 144]
	ldr	x1, [x20, 8]
	ldr	x2, [x20, 24]
	str	w4, [x29, 112]
	ldrb	w3, [x0]
	mov	w0, w4
	bl	ftl_prog_ppa_page
	mov	w1, w0
	ldrh	w0, [x19]
	str	w1, [x29, 124]
	bl	ftl_vpn_decrement
	ldr	w1, [x29, 124]
	cmn	w23, #1
	ldr	w4, [x29, 112]
	ccmn	w1, #1, 4, ne
	beq	.L3115
	add	x0, x29, 240
	ldrh	w1, [x19, 12]
	str	w4, [x0, x24, lsl 2]
	ldrh	w0, [x19, 10]
	add	w0, w0, w1
	add	x1, x29, 304
	sub	w0, w0, #1
	str	w0, [x1, x24, lsl 2]
.L3112:
	add	x24, x24, 1
	b	.L3105
.L3106:
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	ldr	x1, [x20, 8]
	ldr	x2, [x20, 24]
	bl	ftl_read_ppa_page
	mov	w23, w0
	ldr	x0, [x20, 24]
	ldr	w0, [x0, 4]
	bl	lpa_hash_get_ppa
	mov	w4, w0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 14, .L3108
	ldr	x0, [x20, 24]
	mov	w1, w4
	ldr	w2, [x26, x24, lsl 2]
	str	w4, [x29, 160]
	ldr	w3, [x0, 4]
	adrp	x0, .LC181
	add	x0, x0, :lo12:.LC181
	bl	printf
	ldr	w4, [x29, 160]
.L3108:
	ldr	x1, [x20, 24]
	mov	x2, 0
	ldr	w0, [x26, x24, lsl 2]
	cmp	w4, w0
	mov	w0, 1
	stp	w4, w0, [x1, 8]
	csinv	w23, w23, wzr, eq
	str	wzr, [x1, 16]!
	mov	w0, 2
	bl	ftl_debug_info_fill
	cmn	w23, #1
	bne	.L3107
	b	.L3110
.L3115:
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bls	.L3112
	cmn	w23, #1
	bne	.L3176
	b	.L3112
.L3123:
	add	x0, x29, 240
	ldr	w0, [x0, x28, lsl 2]
	cmn	w0, #1
	beq	.L3119
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	ldr	w0, [x26, x28, lsl 2]
	ldr	x1, [x20, 8]
	ldr	x2, [x20, 24]
	bl	ftl_read_ppa_page
	cmp	w0, 256
	ccmn	w0, #1, 4, ne
	bne	.L3119
	add	x0, x29, 240
	ldrb	w3, [x22, #:lo12:.LANCHOR68]
	ldr	x1, [x20, 8]
	ldr	x2, [x20, 24]
	ldr	w0, [x0, x28, lsl 2]
	bl	ftl_read_ppa_page
	mov	w5, w0
	ldr	w0, [x21, #:lo12:.LANCHOR19]
	tbz	x0, 14, .L3121
	ldr	x0, [x20, 24]
	mov	w1, w5
	ldr	w3, [x26, x28, lsl 2]
	str	w5, [x29, 168]
	ldr	w2, [x0, 8]
	mov	x0, x23
	bl	printf
	ldr	w5, [x29, 168]
.L3121:
	cmn	w5, #1
	beq	.L3119
	ldr	x0, [x20, 24]
	ldr	w2, [x26, x28, lsl 2]
	ldr	w1, [x0, 8]
	cmp	w2, w1
	bne	.L3119
	ldr	w1, [x21, #:lo12:.LANCHOR19]
	tbz	x1, 14, .L3122
	add	x1, x29, 304
	ldr	w3, [x1, x28, lsl 2]
	ldr	w1, [x0, 4]
	mov	x0, x24
	bl	printf
.L3122:
	add	x1, x29, 304
	ldr	x0, [x20, 24]
	ldr	w1, [x1, x28, lsl 2]
	str	w1, [x29, 168]
	ldr	w1, [x0, 8]
	ldrh	w2, [x29, 168]
	ldr	w0, [x0, 4]
	bl	lpa_hash_update_ppa
.L3119:
	add	x28, x28, 1
	b	.L3117
.L3095:
	ldr	x3, [x20, 24]
	adrp	x0, .LANCHOR219
	ldr	w0, [x0, #:lo12:.LANCHOR219]
	ldr	w1, [x3, 4]
	cmp	w1, w0
	bcs	.L3092
	ldrb	w0, [x19, 9]
	ldrh	w1, [x25, #:lo12:.LANCHOR100]
	ldrh	w2, [x19, 10]
	mul	w0, w0, w1
	sub	w0, w0, #1
	cmp	w2, w0
	bge	.L3092
	adrp	x0, .LANCHOR69
	ldr	w1, [x3]
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldr	w4, [x0, 8]
	cmp	w1, w4
	bls	.L3096
	str	w1, [x0, 8]
.L3096:
	ldrh	w0, [x19, 12]
	add	w2, w2, w0
	ldp	w0, w1, [x3, 4]
	bl	lpa_hash_update_ppa
	ldr	w0, [x29, 180]
	str	w0, [x29, 176]
	ldr	w0, [x29, 184]
	str	w0, [x29, 180]
	ldr	w0, [x29, 188]
	str	w0, [x29, 184]
	ldr	w0, [x29, 160]
	str	w0, [x29, 188]
	b	.L3092
	.size	ftl_open_sblk_recovery, .-ftl_open_sblk_recovery
	.section	.text.load_l2p_region,"ax",@progbits
	.align	2
	.type	load_l2p_region, %function
load_l2p_region:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	and	w19, w0, 65535
	stp	x21, x22, [sp, 32]
	and	x21, x1, 65535
	stp	x23, x24, [sp, 48]
	cmp	w21, 7
	stp	x25, x26, [sp, 64]
	bls	.L3205
	adrp	x1, .LANCHOR220
	adrp	x0, .LC0
	mov	w2, 32
	add	x1, x1, :lo12:.LANCHOR220
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3205:
	adrp	x20, .LANCHOR69
	mov	x25, x20
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrh	w2, [x0, 698]
	cmp	w2, w19
	bcs	.L3206
	mov	w1, w19
	adrp	x0, .LC184
	add	x0, x0, :lo12:.LC184
	bl	printf
	adrp	x0, .LANCHOR221
	mov	w1, 255
	ldrh	w2, [x0, #:lo12:.LANCHOR221]
	mov	x0, 0
	ldr	x0, [x0, 8]
	bl	ftl_memset
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrh	w0, [x0, 698]
	cmp	w0, w19
	bcc	.L3207
.L3217:
	mov	w0, 0
.L3204:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 80
	ret
.L3207:
	mov	w2, 37
.L3218:
	adrp	x1, .LANCHOR220
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR220
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L3217
.L3206:
	add	x0, x0, x19, sxtw 2
	adrp	x22, .LANCHOR136
	add	x1, x22, :lo12:.LANCHOR136
	ldr	w23, [x0, 704]
	lsl	x0, x21, 4
	add	x26, x1, x0
	strh	w19, [x1, x0]
	strh	wzr, [x26, 2]
	cbnz	w23, .L3209
	mov	w1, w19
	mov	w2, 0
	adrp	x0, .LC185
	add	x0, x0, :lo12:.LC185
	bl	printf
	adrp	x0, .LANCHOR221
	mov	w1, 255
	ldrh	w2, [x0, #:lo12:.LANCHOR221]
	ldr	x0, [x26, 8]
	bl	ftl_memset
	b	.L3217
.L3209:
	adrp	x20, .LANCHOR206
	adrp	x24, .LANCHOR68
	ldr	x1, [x26, 8]
	mov	w0, w23
	ldr	x2, [x20, #:lo12:.LANCHOR206]
	ldrb	w3, [x24, #:lo12:.LANCHOR68]
	bl	ftl_read_ppa_page
	ldr	x1, [x20, #:lo12:.LANCHOR206]
	ldr	w2, [x1]
	cmp	w2, w19
	bne	.L3210
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3210
.L3214:
	ldr	x0, [x20, #:lo12:.LANCHOR206]
	ldr	w0, [x0]
	cmp	w19, w0
	beq	.L3217
	mov	w2, 73
	b	.L3218
.L3210:
	mov	w4, w23
	mov	w3, w0
	mov	w1, w19
	adrp	x0, .LC186
	add	x0, x0, :lo12:.LC186
	bl	printf
	ldr	x1, [x25, #:lo12:.LANCHOR69]
	add	x22, x22, :lo12:.LANCHOR136
	add	x21, x22, x21, lsl 4
	mov	w2, 4
	add	x1, x1, 704
	adrp	x0, .LC187
	add	x0, x0, :lo12:.LC187
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	ldr	x1, [x21, 8]
	mov	w2, 4
	ldrb	w3, [x24, #:lo12:.LANCHOR68]
	adrp	x0, .LC178
	add	x0, x0, :lo12:.LC178
	lsl	w3, w3, 7
	bl	rknand_print_hex
	ldr	x1, [x20, #:lo12:.LANCHOR206]
	mov	w3, 16
	mov	w2, 4
	adrp	x0, .LC188
	add	x0, x0, :lo12:.LC188
	bl	rknand_print_hex
	ldrb	w3, [x24, #:lo12:.LANCHOR68]
	mov	w0, w23
	ldr	x2, [x20, #:lo12:.LANCHOR206]
	ldr	x1, [x21, 8]
	bl	ftl_read_ppa_page
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3213
	adrp	x0, .LANCHOR221
	mov	w1, 255
	ldrh	w2, [x0, #:lo12:.LANCHOR221]
	ldr	x0, [x21, 8]
	bl	ftl_memset
.L3215:
	mov	w0, -1
	b	.L3204
.L3213:
	ldr	x0, [x20, #:lo12:.LANCHOR206]
	ldr	w0, [x0]
	cmp	w19, w0
	beq	.L3214
	b	.L3215
	.size	load_l2p_region, .-load_l2p_region
	.section	.text.pm_gc,"ax",@progbits
	.align	2
	.global	pm_gc
	.type	pm_gc, %function
pm_gc:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR69
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR149
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	ldrh	w2, [x0, 688]
	adrp	x0, .LANCHOR153
	str	x27, [sp, 80]
	mov	x20, x0
	ldrh	w1, [x0, #:lo12:.LANCHOR153]
	sub	w1, w1, #1
	cmp	w2, w1
	bge	.L3220
	ldr	w0, [x21, #:lo12:.LANCHOR149]
	cbz	w0, .L3221
.L3220:
	bl	pm_free_sblk
	ldr	x2, [x19, #:lo12:.LANCHOR69]
	ldrh	w1, [x20, #:lo12:.LANCHOR153]
	sub	w1, w1, #1
	ldrh	w3, [x2, 688]
	cmp	w3, w1
	bge	.L3222
	ldr	w1, [x21, #:lo12:.LANCHOR149]
	cbz	w1, .L3221
.L3222:
	add	x0, x2, x0, uxth 1
	str	wzr, [x21, #:lo12:.LANCHOR149]
	mov	w20, 65535
	ldrh	w21, [x0, 416]
	cmp	w21, w20
	bne	.L3224
	adrp	x1, .LANCHOR222
	add	x1, x1, :lo12:.LANCHOR222
	mov	w2, 182
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	bl	printf
	bl	pm_free_sblk
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	add	x0, x1, x0, uxth 1
	ldrh	w21, [x0, 416]
	cmp	w21, w20
	beq	.L3221
.L3224:
	bl	pm_select_ram_region
	and	x22, x0, 65535
	lsl	x0, x22, 4
	adrp	x20, .LANCHOR136
	add	x1, x20, :lo12:.LANCHOR136
	mov	x25, x22
	add	x23, x1, x0
	ldrh	w0, [x1, x0]
	mov	w1, 65535
	cmp	w0, w1
	beq	.L3225
	ldr	x1, [x23, 8]
	cbz	x1, .L3225
	ldrsh	w2, [x23, 2]
	tbz	w2, #31, .L3225
	bl	pm_write_page
	ldrh	w0, [x23, 2]
	and	w0, w0, 32767
	strh	w0, [x23, 2]
.L3225:
	adrp	x23, .LANCHOR80
	adrp	x24, .LANCHOR31
	add	x23, x23, :lo12:.LANCHOR80
	add	x24, x24, :lo12:.LANCHOR31
	mov	w27, 0
	mov	w26, 24
.L3226:
	ldr	x2, [x19, #:lo12:.LANCHOR69]
	ldrh	w0, [x2, 698]
	cmp	w0, w27
	bhi	.L3229
	bl	pm_free_sblk
.L3221:
	mov	w0, 0
	ldr	x27, [sp, 80]
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L3229:
	ldrb	w0, [x24]
	add	x2, x2, x27, sxtw 2
	ldrh	w3, [x23]
	sub	w0, w26, w0
	sub	w1, w0, w3
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x2, 704]
	sub	w0, w0, #1
	lsr	w1, w1, w3
	and	w0, w0, w1
	adrp	x1, .LANCHOR81
	ldrb	w1, [x1, #:lo12:.LANCHOR81]
	udiv	w0, w0, w1
	cmp	w21, w0, uxth
	bne	.L3227
	mov	w1, w25
	mov	w0, w27
	bl	load_l2p_region
	cbnz	w0, .L3228
	add	x0, x20, :lo12:.LANCHOR136
	add	x0, x0, x22, lsl 4
	ldr	x1, [x0, 8]
	mov	w0, w27
	bl	pm_write_page
.L3228:
	add	x1, x20, :lo12:.LANCHOR136
	lsl	x0, x22, 4
	mov	w2, -1
	strh	w2, [x1, x0]
.L3227:
	add	w27, w27, 1
	and	w27, w27, 65535
	b	.L3226
	.size	pm_gc, .-pm_gc
	.section	.text.pm_flush_id,"ax",@progbits
	.align	2
	.global	pm_flush_id
	.type	pm_flush_id, %function
pm_flush_id:
	stp	x29, x30, [sp, -32]!
	ubfiz	x0, x0, 4, 16
	adrp	x2, .LANCHOR136
	add	x2, x2, :lo12:.LANCHOR136
	add	x29, sp, 0
	str	x19, [sp, 16]
	add	x19, x2, x0
	ldrh	w0, [x2, x0]
	ldr	x1, [x19, 8]
	bl	pm_write_page
	ldrh	w0, [x19, 2]
	and	w0, w0, 32767
	strh	w0, [x19, 2]
	adrp	x19, .LANCHOR134
	ldr	w0, [x19, #:lo12:.LANCHOR134]
	cbz	w0, .L3238
	bl	pm_gc
	str	wzr, [x19, #:lo12:.LANCHOR134]
.L3238:
	mov	w0, 0
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_flush_id, .-pm_flush_id
	.section	.text.pm_flush,"ax",@progbits
	.align	2
	.global	pm_flush
	.type	pm_flush, %function
pm_flush:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR136
	add	x19, x19, :lo12:.LANCHOR136
	mov	w20, 0
	add	x19, x19, 2
.L3245:
	ldrsh	w0, [x19]
	tbz	w0, #31, .L3244
	mov	w0, w20
	bl	pm_flush_id
.L3244:
	add	w20, w20, 1
	add	x19, x19, 16
	and	w20, w20, 65535
	cmp	w20, 8
	bne	.L3245
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	pm_flush, .-pm_flush
	.section	.text.flt_sys_flush,"ax",@progbits
	.align	2
	.global	flt_sys_flush
	.type	flt_sys_flush, %function
flt_sys_flush:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	ldp	x29, x30, [sp], 16
	mov	w0, 0
	b	ftl_info_flush
	.size	flt_sys_flush, .-flt_sys_flush
	.section	.text.rk_ftl_de_init,"ax",@progbits
	.align	2
	.global	rk_ftl_de_init
	.type	rk_ftl_de_init, %function
rk_ftl_de_init:
	stp	x29, x30, [sp, -16]!
	add	x29, sp, 0
	bl	zftl_flash_de_init
	bl	flt_sys_flush
	ldp	x29, x30, [sp], 16
	b	zftl_flash_de_init
	.size	rk_ftl_de_init, .-rk_ftl_de_init
	.section	.text.zftl_deinit,"ax",@progbits
	.align	2
	.global	zftl_deinit
	.type	zftl_deinit, %function
zftl_deinit:
	b	rk_ftl_de_init
	.size	zftl_deinit, .-zftl_deinit
	.section	.text.pm_init,"ax",@progbits
	.align	2
	.global	pm_init
	.type	pm_init, %function
pm_init:
	stp	x29, x30, [sp, -112]!
	mov	w1, 1
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	mov	w24, w0
	adrp	x0, .LANCHOR149
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	adrp	x19, .LANCHOR136
	str	wzr, [x0, #:lo12:.LANCHOR149]
	adrp	x0, .LANCHOR134
	stp	x25, x26, [sp, 64]
	add	x20, x19, :lo12:.LANCHOR136
	str	wzr, [x0, #:lo12:.LANCHOR134]
	adrp	x0, .LANCHOR207
	stp	x27, x28, [sp, 80]
	adrp	x22, .LANCHOR68
	strb	w1, [x0, #:lo12:.LANCHOR207]
	mov	w0, 64
	bl	ftl_malloc
	add	x23, x20, 128
	adrp	x1, .LANCHOR206
	add	x22, x22, :lo12:.LANCHOR68
	mov	x21, x1
	mov	w25, -1
	str	x0, [x1, #:lo12:.LANCHOR206]
.L3255:
	strh	w25, [x20]
	strh	wzr, [x20, 2]
	cbz	w24, .L3254
	ldrb	w0, [x22]
	lsl	w0, w0, 9
	bl	ftl_malloc
	str	x0, [x20, 8]
.L3254:
	add	x20, x20, 16
	cmp	x20, x23
	bne	.L3255
	add	x0, x19, :lo12:.LANCHOR136
	adrp	x20, .LANCHOR69
	ldr	x22, [x21, #:lo12:.LANCHOR206]
	mov	w4, 4
	ldr	x27, [x0, 8]
	mov	x3, x22
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	mov	x2, x27
	ldrh	w1, [x0, 692]
	ldrb	w0, [x0, 694]
	bl	flash_get_last_written_page
	sxth	w26, w0
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	mov	w24, w26
	ldrh	w2, [x0, 696]
	cmp	w2, w26
	bgt	.L3256
	ldrh	w1, [x0, 692]
	mov	w3, w26
	adrp	x0, .LC189
	add	x0, x0, :lo12:.LC189
	adrp	x25, .LANCHOR68
	add	x25, x25, :lo12:.LANCHOR68
	adrp	x28, .LC190
	bl	printf
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	ldrsh	w21, [x0, 696]
	adrp	x0, .LANCHOR117
	add	x0, x0, :lo12:.LANCHOR117
	str	x0, [x29, 104]
.L3257:
	cmp	w21, w26
	ble	.L3260
	adrp	x0, .LANCHOR197
	mov	w1, 1
	add	w24, w24, 1
	strb	w1, [x0, #:lo12:.LANCHOR197]
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	strh	w24, [x0, 696]
	bl	pm_free_sblk
.L3256:
	add	x19, x19, :lo12:.LANCHOR136
	adrp	x0, .LANCHOR221
	mov	w1, 255
	ldrh	w2, [x0, #:lo12:.LANCHOR221]
	ldr	x0, [x19, 8]
	bl	ftl_memset
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	adrp	x0, .LANCHOR197
	ldrb	w0, [x0, #:lo12:.LANCHOR197]
	cbz	w0, .L3261
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
	ldr	x1, [x19, 8]
	mov	w0, -1
	bl	pm_write_page
.L3261:
	bl	pm_free_sblk
	bl	pm_gc
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L3260:
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	mov	x3, x22
	ldr	x1, [x29, 104]
	mov	x2, x27
	ldrb	w4, [x25]
	ldrh	w23, [x0, 692]
	ldrh	w1, [x1]
	ldrb	w0, [x0, 694]
	madd	w23, w23, w1, w21
	mov	w1, w23
	bl	flash_read_page_en
	mov	w4, w0
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	str	w4, [x29, 100]
	mov	w2, w23
	ldr	w1, [x0, 48]
	ldrh	w3, [x0, 694]
	add	w1, w1, 1
	str	w1, [x0, 48]
	add	x0, x28, :lo12:.LC190
	ldr	w1, [x22]
	bl	printf
	ldr	w4, [x29, 100]
	cmp	w4, 512
	ccmn	w4, #1, 4, ne
	beq	.L3258
	ldr	x8, [x20, #:lo12:.LANCHOR69]
	ldr	w6, [x22]
	ldrh	w0, [x8, 698]
	cmp	w6, w0
	bcs	.L3258
	ldr	w7, [x22, 8]
	cbz	w7, .L3259
	ldrb	w1, [x25]
	mov	x0, x27
	lsl	w1, w1, 9
	bl	js_hash
	cmp	w7, w0
	beq	.L3259
	adrp	x0, .LC191
	mov	w1, w7
	add	x0, x0, :lo12:.LC191
	bl	printf
.L3258:
	add	w21, w21, 1
	sxth	w21, w21
	b	.L3257
.L3259:
	add	x6, x8, x6, uxtw 2
	str	w23, [x6, 704]
	b	.L3258
	.size	pm_init, .-pm_init
	.section	.text.pm_log2phys,"ax",@progbits
	.align	2
	.global	pm_log2phys
	.type	pm_log2phys, %function
pm_log2phys:
	stp	x29, x30, [sp, -96]!
	add	x29, sp, 0
	stp	x25, x26, [sp, 64]
	mov	w25, w0
	adrp	x0, .LANCHOR219
	stp	x23, x24, [sp, 48]
	stp	x19, x20, [sp, 16]
	mov	w24, w2
	stp	x21, x22, [sp, 32]
	mov	x23, x1
	ldr	w2, [x0, #:lo12:.LANCHOR219]
	str	x27, [sp, 80]
	cmp	w25, w2
	bcc	.L3277
	mov	w1, w25
	adrp	x0, .LC192
	add	x0, x0, :lo12:.LC192
	bl	printf
	mov	w0, -1
	cbnz	w24, .L3276
	str	w0, [x23]
.L3276:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldr	x27, [sp, 80]
	ldp	x29, x30, [sp], 96
	ret
.L3277:
	adrp	x0, .LANCHOR68
	adrp	x21, .LANCHOR136
	mov	x19, 0
	ldrb	w20, [x0, #:lo12:.LANCHOR68]
	add	x0, x21, :lo12:.LANCHOR136
	add	x0, x0, 8
	lsl	w22, w20, 7
	udiv	w22, w25, w22
	and	w26, w22, 65535
.L3283:
	ldr	x1, [x0]
	cbz	x1, .L3279
	ldrh	w1, [x0, -8]
	cmp	w1, w26
	bne	.L3279
.L3280:
	ubfiz	w20, w20, 7, 9
	msub	w25, w26, w20, w25
	and	x25, x25, 65535
	cbnz	w24, .L3281
	add	x0, x21, :lo12:.LANCHOR136
	adrp	x1, .LANCHOR31
	add	x0, x0, x19, lsl 4
	mov	w2, 24
	ldr	x0, [x0, 8]
	ldr	w0, [x0, x25, lsl 2]
	str	w0, [x23]
	ldrb	w3, [x1, #:lo12:.LANCHOR31]
	mov	w1, 1
	sub	w2, w2, w3
	lsl	w1, w1, w3
	sub	w1, w1, #1
	lsr	w0, w0, w2
	and	w0, w0, w1
	adrp	x1, .LANCHOR118
	ldrb	w1, [x1, #:lo12:.LANCHOR118]
	cmp	w0, w1
	bcc	.L3282
	mov	w0, -1
	str	w0, [x23]
.L3282:
	add	x21, x21, :lo12:.LANCHOR136
	add	x19, x21, x19, lsl 4
	ldrh	w0, [x19, 2]
	mvn	x1, x0
	tst	x1, 32767
	beq	.L3286
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L3286:
	mov	w0, 0
	b	.L3276
.L3281:
	add	x0, x21, :lo12:.LANCHOR136
	ldr	w2, [x23]
	add	x0, x0, x19, lsl 4
	ldr	x1, [x0, 8]
	str	w2, [x1, x25, lsl 2]
	ldrh	w1, [x0, 2]
	orr	w1, w1, -32768
	strh	w1, [x0, 2]
	adrp	x0, .LANCHOR137
	strb	w22, [x0, #:lo12:.LANCHOR137]
	b	.L3282
.L3279:
	add	w19, w19, 1
	add	x0, x0, 16
	and	x19, x19, 65535
	cmp	w19, 8
	bne	.L3283
	bl	pm_select_ram_region
	and	x19, x0, 65535
	sbfiz	x1, x19, 4, 32
	add	x2, x21, :lo12:.LANCHOR136
	add	x3, x2, x1
	mov	w27, w0
	ldrh	w2, [x2, x1]
	mov	w1, 65535
	cmp	w2, w1
	beq	.L3284
	ldrsh	w1, [x3, 2]
	tbz	w1, #31, .L3284
	bl	pm_flush_id
.L3284:
	adrp	x0, .LANCHOR223
	mov	w1, w27
	strb	w19, [x0, #:lo12:.LANCHOR223]
	mov	w0, w26
	bl	load_l2p_region
	b	.L3280
	.size	pm_log2phys, .-pm_log2phys
	.section	.text.gc_recovery,"ax",@progbits
	.align	2
	.global	gc_recovery
	.type	gc_recovery, %function
gc_recovery:
	sub	sp, sp, #240
	adrp	x0, .LANCHOR12
	adrp	x1, .LANCHOR90
	mov	w2, 65535
	stp	x29, x30, [sp, 32]
	add	x29, sp, 32
	stp	x23, x24, [sp, 80]
	ldr	x23, [x0, #:lo12:.LANCHOR12]
	strb	wzr, [x1, #:lo12:.LANCHOR90]
	adrp	x1, .LANCHOR157
	stp	x25, x26, [sp, 96]
	mov	x26, x0
	strb	wzr, [x1, #:lo12:.LANCHOR157]
	add	x1, x23, 80
	stp	x19, x20, [sp, 48]
	str	x1, [x29, 168]
	stp	x21, x22, [sp, 64]
	ldrh	w1, [x23, 80]
	stp	x27, x28, [sp, 112]
	cmp	w1, w2
	beq	.L3293
	mov	w0, -1
	strh	w0, [x23, 130]
	mov	w0, 1
	bl	buf_alloc
	mov	x27, x0
	ldrb	w0, [x23, 89]
	add	x1, x23, 80
	adrp	x3, .LANCHOR117
	str	x3, [x29, 152]
	sub	w0, w0, #1
	add	x0, x1, x0, sxtw 1
	ldrh	w1, [x3, #:lo12:.LANCHOR117]
	ldrh	w0, [x0, 16]
	mul	w1, w0, w1
	adrp	x0, .LANCHOR84
	str	w1, [x29, 200]
	ldrb	w2, [x0, #:lo12:.LANCHOR84]
	str	x0, [x29, 176]
	cmp	w2, 2
	beq	.L3294
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L3294
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbz	w0, .L3295
.L3294:
	adrp	x0, .LANCHOR91
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w2, w0, w2, lsl 24
	str	w2, [x27, 40]
.L3296:
	mov	w1, 1
	mov	x0, x27
	bl	sblk_read_page
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3297
	ldr	x0, [x27, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3298
.L3297:
	mov	x0, x27
	bl	zbuf_free
	ldr	x1, [x27, 24]
	ldr	x0, [x27, 8]
	ldr	w2, [x1, 12]
	str	w2, [sp, 16]
	ldr	w2, [x1, 8]
	str	w2, [sp, 8]
	ldr	w2, [x1, 4]
	str	w2, [sp]
	ldp	w3, w4, [x0]
	ldp	w5, w6, [x0, 8]
	adrp	x0, .LC193
	ldr	w7, [x1]
	add	x0, x0, :lo12:.LC193
	ldr	w1, [x27, 40]
	ldr	w2, [x27, 52]
	bl	printf
.L3387:
	adrp	x0, .LANCHOR11
	ldrh	w1, [x23, 80]
	mov	w25, 0
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x1, lsl 1]
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	ldrh	w1, [x23, 80]
	strh	w1, [x0, 130]
.L3299:
	ldrh	w0, [x23, 80]
	adrp	x2, .LANCHOR11
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ubfiz	x1, x0, 1, 16
	ldrh	w1, [x2, x1]
	cbnz	w1, .L3343
	bl	ftl_dump_write_open_sblk
.L3343:
	ldrh	w1, [x23, 80]
	mov	w2, w25
	adrp	x0, .LC195
	add	x0, x0, :lo12:.LC195
	bl	printf
	mov	w0, -1
	strh	w0, [x23, 80]
	bl	pm_flush
	bl	ftl_ext_info_flush
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	mov	w1, 65535
	ldrh	w0, [x0, 130]
	cmp	w0, w1
	beq	.L3344
	adrp	x1, .LANCHOR8
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	cmp	w1, w0
	bhi	.L3345
	adrp	x1, .LANCHOR225
	adrp	x0, .LC0
	mov	w2, 517
	add	x1, x1, :lo12:.LANCHOR225
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3345:
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sblk
.L3344:
	adrp	x0, .LANCHOR69
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	mov	w0, -1
	strh	w0, [x1, 126]
	ldr	x1, [x26, #:lo12:.LANCHOR12]
	strh	w0, [x1, 130]
	mov	w0, 0
	bl	ftl_info_flush
.L3292:
	ldp	x19, x20, [sp, 48]
	ldp	x21, x22, [sp, 64]
	ldp	x23, x24, [sp, 80]
	ldp	x25, x26, [sp, 96]
	ldp	x27, x28, [sp, 112]
	ldp	x29, x30, [sp, 32]
	add	sp, sp, 240
	ret
.L3295:
	cmp	w2, 3
	bne	.L3296
	adrp	x0, .LANCHOR100
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w0, w0, 50331648
	str	w0, [x27, 40]
	b	.L3296
.L3298:
	adrp	x21, .LANCHOR224
	adrp	x19, .LANCHOR91
	adrp	x20, .LANCHOR85
	adrp	x24, .LANCHOR160
	ldrb	w0, [x21, #:lo12:.LANCHOR224]
	cmp	w0, 2
	bne	.L3300
	ldr	x0, [x29, 176]
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	cmp	w0, 3
	bne	.L3300
	ldrh	w2, [x19, #:lo12:.LANCHOR91]
	adrp	x22, .LANCHOR221
	ldrb	w1, [x20, #:lo12:.LANCHOR85]
	ldr	x3, [x24, #:lo12:.LANCHOR160]
	ubfiz	w2, w2, 2, 14
	ldrh	w0, [x22, #:lo12:.LANCHOR221]
	mul	w2, w2, w1
	ldr	x1, [x27, 8]
	sub	w2, w2, w0
	and	x0, x0, 65532
	and	w2, w2, 65535
	add	x0, x3, x0
	bl	ftl_memcpy
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L3301
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbz	w0, .L3302
.L3301:
	ldr	w0, [x27, 40]
	sub	w0, w0, #1
.L3381:
	str	w0, [x27, 40]
	mov	w1, 1
	mov	x0, x27
	bl	sblk_read_page
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3304
	ldr	x0, [x27, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3305
.L3304:
	mov	x0, x27
	bl	zbuf_free
	b	.L3387
.L3302:
	adrp	x1, .LANCHOR100
	ldr	w0, [x29, 200]
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	sub	w0, w0, #1
	add	w0, w0, w1
	orr	w0, w0, 33554432
	b	.L3381
.L3305:
	ldrh	w2, [x22, #:lo12:.LANCHOR221]
.L3382:
	ldr	x1, [x27, 8]
	adrp	x22, .LANCHOR161
	ldr	x0, [x24, #:lo12:.LANCHOR160]
	bl	ftl_memcpy
	ldrb	w1, [x20, #:lo12:.LANCHOR85]
	ldrh	w0, [x19, #:lo12:.LANCHOR91]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR68
	ldrb	w1, [x1, #:lo12:.LANCHOR68]
	lsl	w2, w0, 2
	cmp	w1, w0, lsr 6
	bge	.L3307
	ldr	x0, [x22, #:lo12:.LANCHOR161]
	mov	w1, 0
	bl	ftl_memset
	ldrb	w21, [x21, #:lo12:.LANCHOR224]
	cmp	w21, 1
	bne	.L3348
	ldrb	w1, [x20, #:lo12:.LANCHOR85]
	ldrh	w0, [x19, #:lo12:.LANCHOR91]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR221
	ldrh	w1, [x1, #:lo12:.LANCHOR221]
	sub	w25, w1, w0, lsl 2
	ldr	x1, [x27, 8]
	mov	w2, w25
	add	x1, x1, x0, sxtw 2
	ldr	x0, [x22, #:lo12:.LANCHOR161]
	bl	ftl_memcpy
.L3308:
	adrp	x0, .LANCHOR100
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	str	w0, [x29, 184]
	ldr	x0, [x29, 176]
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	str	w0, [x29, 188]
	cmp	w0, 2
	bne	.L3309
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbz	w0, .L3310
.L3309:
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbz	w0, .L3311
.L3310:
	ldp	w0, w1, [x29, 184]
	mul	w0, w0, w1
	str	w0, [x29, 184]
	mov	w0, 1
	str	w0, [x29, 188]
.L3311:
	adrp	x22, .LANCHOR35
	mov	w28, 0
	add	x0, x22, :lo12:.LANCHOR35
	mov	w10, 0
	str	x0, [x29, 112]
.L3312:
	sub	w0, w28, #1
	str	w0, [x29, 144]
	ldr	w0, [x29, 184]
	cmp	w0, w28
	bls	.L3325
	add	w0, w28, w28, lsl 1
	mov	x20, 0
	sub	w0, w0, #1
	str	w0, [x29, 164]
	adrp	x0, .LANCHOR36
	add	x0, x0, :lo12:.LANCHOR36
	str	x0, [x29, 120]
	b	.L3326
.L3300:
	ldrh	w2, [x19, #:lo12:.LANCHOR91]
	ldrb	w0, [x20, #:lo12:.LANCHOR85]
	mul	w2, w2, w0
	lsl	w2, w2, 2
	b	.L3382
.L3307:
	ldr	x1, [x27, 8]
	mov	w21, 0
	add	x1, x1, x0, sxtw 2
	ldr	x0, [x22, #:lo12:.LANCHOR161]
	bl	ftl_memcpy
.L3383:
	mov	w25, 0
	b	.L3308
.L3348:
	mov	w21, 1
	b	.L3383
.L3321:
	ldp	x1, x0, [x29, 128]
	ldr	x2, [x29, 176]
	ldrh	w0, [x0, 96]
	ldrh	w1, [x1]
	ldrb	w2, [x2, #:lo12:.LANCHOR84]
	cmp	w2, 2
	mul	w0, w0, w1
	str	w0, [x29, 200]
	add	w1, w22, w0
	beq	.L3313
	ldr	x3, [x29, 112]
	ldrb	w3, [x3]
	cbz	w3, .L3314
.L3313:
	ldr	w0, [x29, 144]
	add	w1, w1, w0
	orr	w1, w1, w2, lsl 24
.L3384:
	str	w1, [x27, 40]
.L3315:
	mov	w1, 1
	str	x8, [x29, 96]
	str	w10, [x29, 104]
	mov	x0, x27
	bl	sblk_read_page
	adrp	x1, .LANCHOR161
	ldr	w10, [x29, 104]
	ldr	x0, [x27, 24]
	ldr	x8, [x29, 96]
	cbz	w21, .L3318
	ldr	x2, [x1, #:lo12:.LANCHOR161]
	ldr	w3, [x2, x8]
	cbnz	w3, .L3318
	ldr	w3, [x0, 8]
	str	w3, [x2, x8]
.L3318:
	ldr	x2, [x24, #:lo12:.LANCHOR160]
	ldr	w6, [x0, 4]
	ldr	w3, [x2, x8]
	cmp	w3, w6
	bne	.L3319
	ldr	x2, [x1, #:lo12:.LANCHOR161]
	ldr	w4, [x2, x8]
	ldr	w2, [x0, 8]
	cmp	w4, w2
	beq	.L3320
.L3319:
	ldr	x1, [x1, #:lo12:.LANCHOR161]
	ldr	w2, [x0, 12]
	str	w2, [sp]
	str	w10, [x29, 96]
	ldr	w4, [x1, x8]
	ldr	w5, [x0]
	ldr	w7, [x0, 8]
	adrp	x0, .LC194
	ldr	w1, [x27, 40]
	add	x0, x0, :lo12:.LC194
	ldr	w2, [x27, 52]
	str	x8, [x29, 104]
	bl	printf
	ldr	x0, [x24, #:lo12:.LANCHOR160]
	ldr	x8, [x29, 104]
	ldr	w10, [x29, 96]
	ldr	w0, [x0, x8]
	cmn	w0, #1
	beq	.L3320
	mov	x0, x27
	bl	zbuf_free
	adrp	x0, .LANCHOR11
	ldrh	w1, [x23, 80]
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x1, lsl 1]
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	ldrh	w1, [x23, 80]
	strh	w1, [x0, 130]
	b	.L3299
.L3314:
	cmp	w2, 3
	bne	.L3316
	ldr	x2, [x29, 120]
	ldrb	w2, [x2]
	cbz	w2, .L3317
	ldr	w0, [x29, 164]
	add	w1, w1, w0
	orr	w1, w1, 50331648
	b	.L3384
.L3317:
	add	w0, w28, w0
	orr	w0, w0, w22, lsl 24
.L3385:
	str	w0, [x27, 40]
	b	.L3315
.L3316:
	add	w0, w28, w0
	b	.L3385
.L3320:
	add	w10, w10, 1
	add	w22, w22, 1
	add	x8, x8, 4
.L3323:
	ldr	w0, [x29, 188]
	cmp	w0, w22
	bcs	.L3321
	add	x20, x20, 1
.L3326:
	ldr	x0, [x29, 168]
	ldrb	w0, [x0, 9]
	cmp	w0, w20
	ble	.L3322
	add	x0, x23, x20, lsl 1
	str	x0, [x29, 136]
	ldr	x0, [x29, 152]
	sbfiz	x8, x10, 2, 32
	mov	w22, 1
	add	x0, x0, :lo12:.LANCHOR117
	str	x0, [x29, 128]
	b	.L3323
.L3322:
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cmp	w0, 0
	cinc	w28, w28, ne
	add	w28, w28, 1
	b	.L3312
.L3325:
	mov	x0, x27
	bl	zbuf_free
	ldr	x0, [x29, 168]
	adrp	x20, .LANCHOR11
	ldrh	w3, [x19, #:lo12:.LANCHOR91]
	mov	w25, 0
	ldrh	w2, [x23, 80]
	mov	w27, 0
	ldr	x1, [x20, #:lo12:.LANCHOR11]
	mov	w28, 0
	ldrb	w0, [x0, 9]
	str	x20, [x29, 144]
	mul	w0, w0, w3
	strh	w0, [x1, x2, lsl 1]
	adrp	x0, .LANCHOR80
	add	x0, x0, :lo12:.LANCHOR80
	str	x0, [x29, 104]
.L3327:
	sub	w0, w27, #1
	str	w0, [x29, 128]
	ldr	w0, [x29, 184]
	cmp	w0, w27
	bls	.L3341
	add	w22, w27, w27, lsl 1
	mov	x21, 0
	sub	w0, w22, #1
	str	w0, [x29, 120]
	b	.L3342
.L3337:
	ldr	x1, [x24, #:lo12:.LANCHOR160]
	sbfiz	x0, x28, 2, 32
	ldr	w20, [x1, x0]
	cmn	w20, #1
	beq	.L3328
	adrp	x1, .LANCHOR161
	ldr	x1, [x1, #:lo12:.LANCHOR161]
	ldr	w0, [x1, x0]
	str	w0, [x29, 164]
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 204]
	cmn	w0, #1
	bne	.L3329
	mov	w2, 0
	add	x1, x29, 204
	mov	w0, w20
	bl	pm_log2phys
.L3329:
	ldr	x0, [x29, 136]
	ldr	x1, [x29, 152]
	ldr	x2, [x29, 176]
	ldrh	w0, [x0, 96]
	ldrh	w1, [x1, #:lo12:.LANCHOR117]
	ldrb	w2, [x2, #:lo12:.LANCHOR84]
	cmp	w2, 2
	mul	w0, w0, w1
	add	w1, w22, w0
	beq	.L3330
	adrp	x6, .LANCHOR35
	ldrb	w6, [x6, #:lo12:.LANCHOR35]
	cbz	w6, .L3331
.L3330:
	ldr	w0, [x29, 128]
	add	w1, w0, w1
	orr	w1, w1, w2, lsl 24
	str	w1, [x29, 200]
.L3332:
	ldp	x0, x1, [x29, 104]
	mov	w19, 24
	mov	w2, 1
	ldrb	w1, [x1]
	ldrh	w0, [x0]
	sub	w19, w19, w1
	ldr	w1, [x29, 164]
	sub	w19, w19, w0
	lsr	w0, w1, w0
	lsl	w19, w2, w19
	sub	w19, w19, #1
	and	w19, w19, w0
	adrp	x0, .LANCHOR81
	ldrb	w0, [x0, #:lo12:.LANCHOR81]
	udiv	w19, w19, w0
	ldr	w0, [x29, 204]
	cmp	w1, w0
	and	x19, x19, 65535
	bne	.L3335
	add	x1, x29, 200
	mov	w0, w20
	bl	pm_log2phys
	add	w25, w25, 1
	mov	w0, w19
	bl	ftl_vpn_decrement
.L3336:
	adrp	x0, .LANCHOR9
	add	w28, w28, 1
	ldr	x0, [x0, #:lo12:.LANCHOR9]
	add	x0, x0, x19, lsl 2
	ldrb	w0, [x0, 2]
	tst	w0, 224
	bne	.L3328
	ldr	x0, [x29, 144]
	lsl	x19, x19, 1
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrh	w1, [x0, x19]
	cbz	w1, .L3328
	strh	wzr, [x0, x19]
.L3328:
	add	w22, w22, 1
.L3339:
	ldr	w0, [x29, 188]
	cmp	w0, w22
	bcs	.L3337
	add	x21, x21, 1
.L3342:
	ldr	x0, [x29, 168]
	ldrb	w0, [x0, 9]
	cmp	w0, w21
	ble	.L3338
	add	x0, x23, x21, lsl 1
	mov	w22, 1
	str	x0, [x29, 136]
	adrp	x0, .LANCHOR31
	add	x0, x0, :lo12:.LANCHOR31
	str	x0, [x29, 112]
	b	.L3339
.L3331:
	cmp	w2, 3
	bne	.L3333
	adrp	x2, .LANCHOR36
	ldrb	w6, [x2, #:lo12:.LANCHOR36]
	lsl	w2, w22, 24
	cbz	w6, .L3334
	ldr	w0, [x29, 120]
	add	w1, w0, w1
	orr	w0, w1, w2
.L3386:
	str	w0, [x29, 200]
	b	.L3332
.L3334:
	add	w0, w27, w0
	orr	w0, w0, w2
	b	.L3386
.L3333:
	add	w0, w27, w0
	b	.L3386
.L3335:
	ldr	w1, [x29, 200]
	cmp	w0, w1
	cinc	w25, w25, eq
	b	.L3336
.L3338:
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cmp	w0, 0
	cinc	w27, w27, ne
	add	w27, w27, 1
	b	.L3327
.L3341:
	ldr	x0, [x29, 144]
	ldrh	w1, [x23, 80]
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	strh	w25, [x0, x1, lsl 1]
	ldrh	w0, [x23, 80]
	bl	zftl_insert_data_list
	b	.L3299
.L3293:
	ldrh	w0, [x23, 130]
	cmp	w0, w1
	beq	.L3292
	adrp	x19, .LANCHOR69
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldrh	w1, [x1, 126]
	cmp	w1, w0
	bne	.L3347
	bl	pm_flush
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	ldrh	w0, [x0, 130]
	bl	ftl_free_sblk
	ldr	x0, [x19, #:lo12:.LANCHOR69]
	mov	w1, -1
	strh	w1, [x0, 126]
	mov	w0, 0
	bl	ftl_info_flush
.L3347:
	ldr	x0, [x26, #:lo12:.LANCHOR12]
	mov	w1, -1
	strh	w1, [x0, 130]
	b	.L3292
	.size	gc_recovery, .-gc_recovery
	.section	.text.zftl_init,"ax",@progbits
	.align	2
	.global	zftl_init
	.type	zftl_init, %function
zftl_init:
	stp	x29, x30, [sp, -112]!
	adrp	x1, .LANCHOR65
	mov	w0, -1
	add	x29, sp, 0
	strb	w0, [x1, #:lo12:.LANCHOR65]
	adrp	x1, .LANCHOR66
	stp	x21, x22, [sp, 32]
	adrp	x22, .LANCHOR100
	strb	wzr, [x1, #:lo12:.LANCHOR66]
	adrp	x1, .LANCHOR71
	stp	x19, x20, [sp, 16]
	adrp	x21, .LANCHOR85
	strb	w0, [x1, #:lo12:.LANCHOR71]
	adrp	x1, .LANCHOR72
	stp	x23, x24, [sp, 48]
	adrp	x20, .LANCHOR221
	strb	wzr, [x1, #:lo12:.LANCHOR72]
	adrp	x1, .LANCHOR184
	stp	x25, x26, [sp, 64]
	adrp	x23, .LANCHOR8
	strb	w0, [x1, #:lo12:.LANCHOR184]
	adrp	x0, .LANCHOR183
	mov	w1, -1
	stp	x27, x28, [sp, 80]
	strb	wzr, [x0, #:lo12:.LANCHOR183]
	adrp	x0, .LANCHOR226
	str	w1, [x0, #:lo12:.LANCHOR226]
	adrp	x1, .LC196
	adrp	x0, .LC98
	add	x1, x1, :lo12:.LC196
	add	x0, x0, :lo12:.LC98
	bl	printf
	adrp	x1, .LANCHOR32
	add	x1, x1, :lo12:.LANCHOR32
	adrp	x0, .LANCHOR84
	adrp	x2, .LANCHOR68
	adrp	x3, .LANCHOR118
	adrp	x4, .LANCHOR81
	ldrb	w7, [x1, 12]
	strb	w7, [x0, #:lo12:.LANCHOR84]
	ldrb	w0, [x1, 9]
	strb	w0, [x2, #:lo12:.LANCHOR68]
	adrp	x2, .LANCHOR91
	ldrh	w5, [x1, 10]
	strh	w5, [x2, #:lo12:.LANCHOR91]
	adrp	x2, .LANCHOR23
	ldrh	w8, [x1, 14]
	ubfiz	w6, w0, 9, 7
	ldrb	w2, [x2, #:lo12:.LANCHOR23]
	sdiv	w11, w5, w7
	strb	w2, [x3, #:lo12:.LANCHOR118]
	ldrb	w3, [x1, 13]
	adrp	x1, .LANCHOR2
	strb	w3, [x4, #:lo12:.LANCHOR81]
	ldrh	w4, [x1, #:lo12:.LANCHOR2]
	adrp	x1, .LANCHOR117
	strh	w11, [x22, #:lo12:.LANCHOR100]
	mul	w2, w2, w3
	strh	w4, [x1, #:lo12:.LANCHOR117]
	strh	w8, [x23, #:lo12:.LANCHOR8]
	mov	w3, 1
	and	w2, w2, 255
	strh	w6, [x20, #:lo12:.LANCHOR221]
	strb	w2, [x21, #:lo12:.LANCHOR85]
	mov	w1, 0
.L3389:
	cmp	w4, w3
	bcs	.L3390
	mul	w10, w0, w5
	adrp	x3, .LANCHOR80
	sub	w1, w1, #1
	mov	w4, 0
	strh	w1, [x3, #:lo12:.LANCHOR80]
	mov	w1, 1
	mul	w3, w8, w10
	lsr	w12, w3, 21
.L3391:
	cmp	w12, w1
	bcs	.L3392
	mov	w1, 57344
	sub	w4, w4, #1
	movk	w1, 0x1c, lsl 16
	mul	w3, w3, w2
	adrp	x28, .LANCHOR219
	sub	w12, w6, #1
	mul	w1, w2, w1
	adrp	x24, .LANCHOR203
	mul	w11, w11, w2
	adrp	x27, .LANCHOR228
	mul	w10, w10, w2
	adrp	x26, .LANCHOR153
	lsl	w1, w1, w4
	adrp	x4, .LANCHOR73
	sub	w10, w10, #1
	adrp	x25, .LANCHOR104
	str	w1, [x4, #:lo12:.LANCHOR73]
	adrp	x4, .LANCHOR227
	lsr	w8, w8, 4
	strh	w8, [x25, #:lo12:.LANCHOR104]
	str	w3, [x4, #:lo12:.LANCHOR227]
	add	w3, w1, 24576
	str	w3, [x27, #:lo12:.LANCHOR228]
	cmp	w8, 79
	udiv	w0, w3, w0
	udiv	w3, w3, w10
	str	w0, [x28, #:lo12:.LANCHOR219]
	add	w0, w12, w0, lsl 2
	add	w3, w3, 8
	udiv	w0, w0, w6
	strh	w0, [x24, #:lo12:.LANCHOR203]
	ubfiz	w0, w0, 4, 16
	sdiv	w0, w0, w11
	strh	w0, [x26, #:lo12:.LANCHOR153]
	adrp	x0, .LANCHOR107
	str	x0, [x29, 104]
	strh	w3, [x0, #:lo12:.LANCHOR107]
	bhi	.L3393
	mov	w0, 80
	strh	w0, [x25, #:lo12:.LANCHOR104]
.L3393:
	adrp	x12, .LANCHOR132
	mov	w0, 2000
	adrp	x11, .LANCHOR131
	adrp	x3, .LANCHOR150
	strh	w0, [x12, #:lo12:.LANCHOR132]
	mov	w0, 50
	adrp	x8, .LANCHOR151
	strh	w0, [x11, #:lo12:.LANCHOR131]
	mov	w0, 256
	strh	w0, [x3, #:lo12:.LANCHOR150]
	mov	w0, 48
	strh	w0, [x8, #:lo12:.LANCHOR151]
	adrp	x0, .LANCHOR10
	mov	w10, 32
	cmp	w7, 2
	mov	x13, x11
	strh	w10, [x0, #:lo12:.LANCHOR10]
	mov	x7, x12
	mov	x14, x8
	beq	.L3394
	adrp	x15, .LANCHOR89
	ldrb	w15, [x15, #:lo12:.LANCHOR89]
	cbz	w15, .L3395
.L3394:
	mov	w8, 150
	strh	w8, [x13, #:lo12:.LANCHOR131]
	mov	w8, 64
	strh	w8, [x14, #:lo12:.LANCHOR151]
	mov	w8, 12
	strh	w8, [x0, #:lo12:.LANCHOR10]
	adrp	x8, .LANCHOR0
	ldrb	w8, [x8, #:lo12:.LANCHOR0]
	cbnz	w8, .L3396
	mov	w8, 4
	strh	w8, [x0, #:lo12:.LANCHOR10]
	mov	w0, 600
	strh	w0, [x7, #:lo12:.LANCHOR132]
	mov	w0, 128
	strh	w0, [x3, #:lo12:.LANCHOR150]
.L3396:
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbz	w0, .L3398
	mov	w0, 200
	strh	w0, [x13, #:lo12:.LANCHOR131]
	mov	w0, 2000
	strh	w0, [x7, #:lo12:.LANCHOR132]
.L3398:
	adrp	x0, .LANCHOR128
	mul	w2, w5, w2
	mov	w3, 1
	str	wzr, [x0, #:lo12:.LANCHOR128]
	adrp	x0, .LANCHOR224
	cmp	w6, w2, lsl 2
	strb	w3, [x0, #:lo12:.LANCHOR224]
	bge	.L3400
	mov	w2, 2
	strb	w2, [x0, #:lo12:.LANCHOR224]
.L3400:
	adrp	x19, .LANCHOR19
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3401
	str	x4, [x29, 96]
	adrp	x0, .LC197
	add	x0, x0, :lo12:.LC197
	bl	printf
	ldr	x4, [x29, 96]
.L3401:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3402
	ldr	w1, [x4, #:lo12:.LANCHOR227]
	adrp	x0, .LC198
	add	x0, x0, :lo12:.LC198
	bl	printf
.L3402:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3403
	ldr	w1, [x28, #:lo12:.LANCHOR219]
	adrp	x0, .LC199
	add	x0, x0, :lo12:.LC199
	bl	printf
.L3403:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3404
	ldr	w1, [x27, #:lo12:.LANCHOR228]
	adrp	x0, .LC200
	add	x0, x0, :lo12:.LC200
	bl	printf
.L3404:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3405
	ldrh	w1, [x24, #:lo12:.LANCHOR203]
	adrp	x0, .LC201
	add	x0, x0, :lo12:.LC201
	bl	printf
.L3405:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3406
	ldrh	w1, [x20, #:lo12:.LANCHOR221]
	adrp	x0, .LC202
	add	x0, x0, :lo12:.LC202
	bl	printf
.L3406:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3407
	ldrh	w1, [x26, #:lo12:.LANCHOR153]
	adrp	x0, .LC203
	add	x0, x0, :lo12:.LC203
	bl	printf
.L3407:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3408
	ldrh	w1, [x25, #:lo12:.LANCHOR104]
	adrp	x0, .LC204
	add	x0, x0, :lo12:.LC204
	bl	printf
.L3408:
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3409
	ldr	x0, [x29, 104]
	ldrh	w1, [x0, #:lo12:.LANCHOR107]
	adrp	x0, .LC205
	add	x0, x0, :lo12:.LC205
	bl	printf
.L3409:
	bl	zbuf_init
	adrp	x25, .LANCHOR199
	mov	w0, 16384
	bl	ftl_malloc
	adrp	x1, .LANCHOR194
	str	x0, [x1, #:lo12:.LANCHOR194]
	mov	w0, 16384
	bl	ftl_malloc
	str	x0, [x25, #:lo12:.LANCHOR199]
	mov	w0, 16384
	bl	ftl_malloc
	adrp	x1, .LANCHOR189
	str	x0, [x1, #:lo12:.LANCHOR189]
	mov	w0, 6
	ldrh	w1, [x23, #:lo12:.LANCHOR8]
	mul	w0, w1, w0
	bl	ftl_malloc
	adrp	x1, .LANCHOR4
	str	x0, [x1, #:lo12:.LANCHOR4]
	ldrb	w1, [x21, #:lo12:.LANCHOR85]
	ldrh	w0, [x22, #:lo12:.LANCHOR100]
	mul	w0, w0, w1
	lsl	w0, w0, 2
	bl	ftl_malloc
	adrp	x1, .LANCHOR124
	ldr	x2, [x25, #:lo12:.LANCHOR199]
	adrp	x25, .LANCHOR12
	str	x0, [x1, #:lo12:.LANCHOR124]
	adrp	x0, .LANCHOR123
	ldrh	w1, [x22, #:lo12:.LANCHOR100]
	str	x2, [x0, #:lo12:.LANCHOR123]
	ldrb	w0, [x21, #:lo12:.LANCHOR85]
	mul	w1, w1, w0
	lsl	w0, w1, 1
	adrp	x1, .LANCHOR11
	add	x3, x2, x0, sxtw 2
	str	x3, [x1, #:lo12:.LANCHOR11]
	ldrh	w1, [x23, #:lo12:.LANCHOR8]
	add	w1, w0, w1, lsr 1
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	add	x1, x2, x1, sxtw 2
	str	x1, [x25, #:lo12:.LANCHOR12]
	tbz	x0, 12, .L3410
	adrp	x0, .LC206
	add	x0, x0, :lo12:.LC206
	bl	printf
.L3410:
	ldrh	w0, [x22, #:lo12:.LANCHOR100]
	ldrb	w21, [x21, #:lo12:.LANCHOR85]
	ldrh	w1, [x23, #:lo12:.LANCHOR8]
	ldrh	w22, [x24, #:lo12:.LANCHOR203]
	mul	w21, w0, w21
	ldr	w0, [x19, #:lo12:.LANCHOR19]
	add	w21, w1, w21, lsl 2
	lsl	w1, w1, 2
	lsl	w21, w21, 1
	add	w22, w1, w22, lsl 2
	add	w21, w21, 632
	add	w22, w22, 704
	tbz	x0, 12, .L3411
	ldrh	w3, [x20, #:lo12:.LANCHOR221]
	adrp	x0, .LC207
	mov	w2, w22
	mov	w1, w21
	add	x0, x0, :lo12:.LC207
	bl	printf
.L3411:
	ldrh	w0, [x20, #:lo12:.LANCHOR221]
	cmp	w21, w0
	bhi	.L3412
	cmp	w22, w0
	bls	.L3413
.L3412:
.L3459:
	b	.L3459
.L3390:
	add	w1, w1, 1
	lsl	w3, w3, 1
	and	w1, w1, 65535
	b	.L3389
.L3392:
	add	w4, w4, 1
	lsl	w1, w1, 1
	and	w4, w4, 65535
	b	.L3391
.L3395:
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbz	w0, .L3398
	mov	w0, 1200
	strh	w10, [x11, #:lo12:.LANCHOR131]
	strh	w0, [x12, #:lo12:.LANCHOR132]
	strh	w10, [x8, #:lo12:.LANCHOR151]
	b	.L3398
.L3413:
	bl	sblk_init
	bl	ftl_info_blk_init
	cmn	w0, #1
	beq	.L3388
	bl	ftl_ext_info_init
	adrp	x19, .LANCHOR69
	bl	gc_init
	mov	w0, 1
	bl	pm_init
	bl	lpa_rebuild_hash
	ldr	x0, [x25, #:lo12:.LANCHOR12]
	mov	x1, 0
	add	x0, x0, 16
	bl	ftl_open_sblk_recovery
	ldr	x0, [x25, #:lo12:.LANCHOR12]
	add	x1, x0, 16
	add	x0, x0, 48
	bl	ftl_open_sblk_recovery
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 8]
	add	w0, w0, 16
	str	w0, [x1, 8]
	ldr	x0, [x25, #:lo12:.LANCHOR12]
	add	x0, x0, 16
	bl	ftl_info_data_recovery
	ldr	x0, [x25, #:lo12:.LANCHOR12]
	add	x0, x0, 48
	bl	ftl_info_data_recovery
	ldr	x0, [x25, #:lo12:.LANCHOR12]
	add	x0, x0, 80
	bl	ftl_info_data_recovery
	bl	gc_recovery
	bl	pm_flush
	mov	w0, 1
	bl	ftl_total_vpn_update
	adrp	x0, .LANCHOR197
	ldrb	w0, [x0, #:lo12:.LANCHOR197]
	cbz	w0, .L3415
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 68]
	add	w0, w0, 1
	str	w0, [x1, 68]
.L3415:
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	mov	w0, 0
.L3388:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
	.size	zftl_init, .-zftl_init
	.section	.text.rk_ftl_init,"ax",@progbits
	.align	2
	.global	rk_ftl_init
	.type	rk_ftl_init, %function
rk_ftl_init:
	stp	x29, x30, [sp, -32]!
	add	x29, sp, 0
	str	x19, [sp, 16]
	bl	nand_flash_init
	cbnz	w0, .L3463
	bl	zftl_init
.L3463:
	mov	w19, w0
	bl	idb_init
	mov	w1, w19
	adrp	x0, .LC208
	add	x0, x0, :lo12:.LC208
	bl	printf
	mov	w0, w19
	ldr	x19, [sp, 16]
	ldp	x29, x30, [sp], 32
	ret
	.size	rk_ftl_init, .-rk_ftl_init
	.section	.text.gc_update_l2p_map_new,"ax",@progbits
	.align	2
	.global	gc_update_l2p_map_new
	.type	gc_update_l2p_map_new, %function
gc_update_l2p_map_new:
	stp	x29, x30, [sp, -176]!
	adrp	x0, .LANCHOR12
	adrp	x1, .LANCHOR91
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	ldr	x21, [x0, #:lo12:.LANCHOR12]
	stp	x25, x26, [sp, 64]
	ldrh	w26, [x1, #:lo12:.LANCHOR91]
	add	x1, x21, 80
	stp	x23, x24, [sp, 48]
	adrp	x24, .LANCHOR19
	stp	x19, x20, [sp, 16]
	stp	x27, x28, [sp, 80]
	stp	x0, x1, [x29, 128]
	ldrb	w1, [x1, 9]
	mul	w26, w26, w1
	ldr	w1, [x24, #:lo12:.LANCHOR19]
	tbz	x1, 8, .L3466
	ldrh	w1, [x21, 80]
	adrp	x0, .LC209
	add	x0, x0, :lo12:.LC209
	bl	printf
.L3466:
	adrp	x23, .LANCHOR11
	adrp	x0, .LANCHOR224
	ldrh	w2, [x21, 80]
	mov	x22, 0
	ldr	x1, [x23, #:lo12:.LANCHOR11]
	mov	w25, 0
	ldrb	w0, [x0, #:lo12:.LANCHOR224]
	sub	w0, w26, w0
	strh	w0, [x1, x2, lsl 1]
	adrp	x0, .LANCHOR68
	add	x0, x0, :lo12:.LANCHOR68
	str	x0, [x29, 104]
.L3467:
	mov	w28, w22
	cmp	w26, w22
	bhi	.L3477
	ldr	w0, [x24, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3478
	ldr	x0, [x29, 128]
	mov	w3, w25
	ldr	x1, [x23, #:lo12:.LANCHOR11]
	ldrh	w2, [x21, 80]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldrh	w2, [x1, x2, lsl 1]
	ldrh	w1, [x0, 80]
	adrp	x0, .LC212
	add	x0, x0, :lo12:.LC212
	bl	printf
.L3478:
	ldrh	w1, [x21, 80]
	ldr	x0, [x23, #:lo12:.LANCHOR11]
	ldrh	w0, [x0, x1, lsl 1]
	cmp	w25, w0
	beq	.L3479
	adrp	x1, .LANCHOR229
	adrp	x0, .LC0
	mov	w2, 898
	add	x1, x1, :lo12:.LANCHOR229
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3479:
	ldrh	w1, [x21, 80]
	ldr	x0, [x23, #:lo12:.LANCHOR11]
	strh	w25, [x0, x1, lsl 1]
	ldrh	w0, [x21, 80]
	bl	zftl_insert_data_list
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 176
	ret
.L3477:
	adrp	x27, .LANCHOR160
	lsl	x19, x22, 2
	ldr	x0, [x27, #:lo12:.LANCHOR160]
	ldr	w2, [x0, x19]
	cmn	w2, #1
	beq	.L3468
	adrp	x0, .LANCHOR68
	ldrb	w20, [x0, #:lo12:.LANCHOR68]
	lsl	w20, w20, 7
	udiv	w20, w2, w20
	and	w0, w20, 65535
	str	w0, [x29, 156]
	ldr	w0, [x24, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3469
	ldr	w1, [x29, 156]
	adrp	x0, .LC210
	mov	w3, w22
	add	x0, x0, :lo12:.LC210
	bl	printf
.L3469:
	sub	w28, w26, w28
	add	x28, x28, x22
	lsl	x0, x28, 2
	str	x0, [x29, 144]
	adrp	x0, .LC211
	add	x0, x0, :lo12:.LC211
	str	x0, [x29, 120]
	adrp	x0, .LANCHOR80
	add	x0, x0, :lo12:.LANCHOR80
	str	x0, [x29, 112]
.L3470:
	ldr	x0, [x29, 144]
	cmp	x0, x19
	bne	.L3476
.L3468:
	add	x22, x22, 1
	b	.L3467
.L3476:
	ldr	x0, [x27, #:lo12:.LANCHOR160]
	ldr	w20, [x0, x19]
	cmn	w20, #1
	beq	.L3471
	ldr	x0, [x29, 104]
	ldr	w1, [x29, 156]
	ldrb	w0, [x0]
	lsl	w0, w0, 7
	udiv	w0, w20, w0
	cmp	w1, w0, uxth
	bne	.L3471
	adrp	x0, .LANCHOR161
	ldr	x0, [x0, #:lo12:.LANCHOR161]
	ldr	w28, [x0, x19]
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 172]
	cmn	w0, #1
	bne	.L3472
	mov	w2, 0
	add	x1, x29, 172
	mov	w0, w20
	bl	pm_log2phys
.L3472:
	ldr	w3, [x29, 172]
	cmp	w28, w3
	bne	.L3473
	adrp	x0, .LANCHOR162
	mov	w2, 1
	add	x1, x29, 168
	add	w25, w25, 1
	ldr	x0, [x0, #:lo12:.LANCHOR162]
	ldr	w0, [x0, x19]
	str	w0, [x29, 168]
	mov	w0, w20
	bl	pm_log2phys
	ldr	x0, [x29, 112]
	ldrh	w2, [x0]
	adrp	x0, .LANCHOR31
	ldrb	w1, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	lsr	w28, w28, w2
	sub	w0, w0, w1
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	sub	w0, w0, #1
	and	w28, w0, w28
	adrp	x0, .LANCHOR81
	ldrb	w0, [x0, #:lo12:.LANCHOR81]
	udiv	w0, w28, w0
.L3499:
	bl	ftl_vpn_decrement
	ldr	x0, [x27, #:lo12:.LANCHOR160]
	mov	w1, -1
	str	w1, [x0, x19]
.L3471:
	add	x19, x19, 4
	b	.L3470
.L3473:
	ldr	w0, [x24, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3475
	ldr	x0, [x29, 120]
	mov	w2, w28
	mov	w1, w20
	bl	printf
.L3475:
	ldr	x0, [x29, 136]
	ldrh	w0, [x0]
	b	.L3499
	.size	gc_update_l2p_map_new, .-gc_update_l2p_map_new
	.section	.text.gc_scan_src_blk_one_page,"ax",@progbits
	.align	2
	.global	gc_scan_src_blk_one_page
	.type	gc_scan_src_blk_one_page, %function
gc_scan_src_blk_one_page:
	stp	x29, x30, [sp, -96]!
	mov	w3, 0
	mov	w4, 0
	mov	w5, 65535
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR76
	add	x1, x20, :lo12:.LANCHOR76
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	adrp	x21, .LANCHOR85
	stp	x25, x26, [sp, 64]
	ldrb	w6, [x21, #:lo12:.LANCHOR85]
	ldrb	w0, [x1, 4]
	add	x2, x1, x0, sxtw 1
	ldrh	w22, [x2, 40]
	ldrh	w2, [x1, 2]
.L3501:
	cmp	w22, w5
	beq	.L3503
	cbz	w4, .L3504
	add	x1, x20, :lo12:.LANCHOR76
	strh	w2, [x1, 2]
.L3504:
	cbz	w3, .L3505
	add	x1, x20, :lo12:.LANCHOR76
	strb	w0, [x1, 4]
.L3505:
	mov	w0, 1
	adrp	x23, .LANCHOR117
	bl	buf_alloc
	adrp	x24, .LANCHOR35
	mov	x25, x0
	add	x23, x23, :lo12:.LANCHOR117
	add	x24, x24, :lo12:.LANCHOR35
	mov	w26, 1
.L3506:
	add	x19, x20, :lo12:.LANCHOR76
	ldrb	w1, [x19, 6]
	cmp	w26, w1
	ble	.L3516
	mov	x0, x25
	bl	zbuf_free
	ldrb	w0, [x19, 4]
	ldrb	w1, [x21, #:lo12:.LANCHOR85]
	add	w0, w0, 1
	and	w0, w0, 255
	strb	w0, [x19, 4]
	cmp	w1, w0
	bne	.L3500
	ldrh	w0, [x19, 2]
	strb	wzr, [x19, 4]
	add	w0, w0, 1
	strh	w0, [x19, 2]
.L3500:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x29, x30, [sp], 96
	ret
.L3503:
	add	w0, w0, 1
	and	w0, w0, 255
	cmp	w0, w6
	bne	.L3502
	add	w2, w2, 1
	mov	w0, 0
	and	w2, w2, 65535
	mov	w4, 1
.L3502:
	add	x3, x1, x0, sxtw 1
	ldrh	w22, [x3, 40]
	mov	w3, 1
	b	.L3501
.L3516:
	ldrh	w0, [x23]
	cmp	w1, 2
	mul	w0, w0, w22
	bne	.L3507
	ldrh	w1, [x19, 2]
	lsl	w1, w1, 1
.L3526:
	sub	w1, w1, #1
	add	w0, w26, w0
	add	w0, w1, w0
	adrp	x1, .LANCHOR84
	ldrb	w1, [x1, #:lo12:.LANCHOR84]
	orr	w0, w0, w1, lsl 24
.L3525:
	str	w0, [x25, 40]
	mov	w1, 1
	mov	x0, x25
	bl	sblk_read_page
	ldr	w0, [x25, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3513
	ldr	x0, [x25, 24]
	ldr	w19, [x0, 4]
	mov	w0, w19
	bl	lpa_hash_get_ppa
	str	w0, [x29, 92]
	cmn	w0, #1
	bne	.L3514
	adrp	x0, .LANCHOR219
	ldr	w0, [x0, #:lo12:.LANCHOR219]
	cmp	w19, w0
	bcs	.L3514
	mov	w2, 0
	add	x1, x29, 92
	mov	w0, w19
	bl	pm_log2phys
.L3514:
	ldr	w2, [x25, 40]
	ldr	w0, [x29, 92]
	cmp	w2, w0
	bne	.L3513
	add	x1, x20, :lo12:.LANCHOR76
	adrp	x4, .LANCHOR82
	ldr	x4, [x4, #:lo12:.LANCHOR82]
	ldrh	w0, [x1, 24]
	ubfiz	x3, x0, 2, 16
	add	w0, w0, 1
	str	w2, [x4, x3]
	strh	w0, [x1, 24]
.L3513:
	add	x1, x20, :lo12:.LANCHOR76
	add	w26, w26, 1
	ldrh	w0, [x1, 26]
	add	w0, w0, 1
	strh	w0, [x1, 26]
	b	.L3506
.L3507:
	cmp	w1, 3
	bne	.L3509
	ldrb	w1, [x24]
	cbnz	w1, .L3510
	adrp	x1, .LANCHOR36
	ldrb	w1, [x1, #:lo12:.LANCHOR36]
	cbz	w1, .L3511
.L3510:
	add	x1, x20, :lo12:.LANCHOR76
	ldrh	w1, [x1, 2]
	add	w1, w1, w1, lsl 1
	b	.L3526
.L3511:
	ldrh	w1, [x19, 2]
	add	w0, w1, w0
	orr	w0, w0, w26, lsl 24
	b	.L3525
.L3509:
	ldrh	w1, [x19, 2]
	add	w0, w1, w0
	b	.L3525
	.size	gc_scan_src_blk_one_page, .-gc_scan_src_blk_one_page
	.section	.text.gc_scan_src_blk,"ax",@progbits
	.align	2
	.global	gc_scan_src_blk
	.type	gc_scan_src_blk, %function
gc_scan_src_blk:
	stp	x29, x30, [sp, -112]!
	mov	w0, 65535
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR76
	stp	x19, x20, [sp, 16]
	ldrh	w1, [x21, #:lo12:.LANCHOR76]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	cmp	w1, w0
	stp	x27, x28, [sp, 80]
	bne	.L3528
	adrp	x1, .LANCHOR230
	adrp	x0, .LC0
	mov	w2, 1505
	add	x1, x1, :lo12:.LANCHOR230
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3528:
	ldrh	w1, [x21, #:lo12:.LANCHOR76]
	mov	w0, 65535
	cmp	w1, w0
	beq	.L3558
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3530
	adrp	x2, .LANCHOR11
	ubfiz	x0, x1, 1, 16
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ldrh	w2, [x2, x0]
	adrp	x0, .LC213
	add	x0, x0, :lo12:.LC213
	bl	printf
.L3530:
	ldrh	w0, [x21, #:lo12:.LANCHOR76]
	add	x14, x21, :lo12:.LANCHOR76
	add	x1, x14, 40
	bl	ftl_get_blk_list_in_sblk
	and	w1, w0, 255
	strb	w1, [x14, 5]
	cbnz	w1, .L3531
	mov	w0, -1
	strh	w0, [x21, #:lo12:.LANCHOR76]
.L3558:
	mov	w0, 0
	b	.L3527
.L3531:
	adrp	x4, .LANCHOR9
	ldrh	w3, [x21, #:lo12:.LANCHOR76]
	mov	x19, x4
	ldr	x1, [x4, #:lo12:.LANCHOR9]
	mov	x2, x3
	add	x1, x1, x3, lsl 2
	ldrb	w1, [x1, 2]
	and	w1, w1, 224
	cmp	w1, 32
	beq	.L3532
	cmp	w1, 224
	beq	.L3532
	cbz	w1, .L3533
	adrp	x1, .LANCHOR12
	ldr	x1, [x1, #:lo12:.LANCHOR12]
	ldrh	w3, [x1, 16]
	cmp	w3, w2
	beq	.L3532
	ldrh	w3, [x1, 48]
	cmp	w3, w2
	beq	.L3532
	ldrh	w1, [x1, 80]
	cmp	w1, w2
	bne	.L3578
.L3532:
	add	x0, x21, :lo12:.LANCHOR76
	mov	w1, -1
	strh	w1, [x21, #:lo12:.LANCHOR76]
	strh	wzr, [x0, 24]
	b	.L3558
.L3533:
	adrp	x0, .LANCHOR11
	mov	x19, x0
	ldr	x1, [x0, #:lo12:.LANCHOR11]
	ldrh	w1, [x1, x3, lsl 1]
	cbz	w1, .L3535
	adrp	x1, .LANCHOR230
	adrp	x0, .LC0
	mov	w2, 1530
	add	x1, x1, :lo12:.LANCHOR230
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3535:
	ldrh	w1, [x21, #:lo12:.LANCHOR76]
	ldr	x0, [x19, #:lo12:.LANCHOR11]
	strh	wzr, [x0, x1, lsl 1]
	b	.L3532
.L3578:
	and	w0, w0, 255
	sub	w0, w0, #1
	add	x0, x14, x0, sxtw 1
	ldrh	w24, [x0, 40]
	mov	w0, 65535
	cmp	w24, w0
	bne	.L3536
	adrp	x1, .LANCHOR230
	adrp	x0, .LC0
	mov	w2, 1540
	add	x1, x1, :lo12:.LANCHOR230
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3536:
	ldrh	w1, [x21, #:lo12:.LANCHOR76]
	adrp	x23, .LANCHOR117
	ldr	x2, [x19, #:lo12:.LANCHOR9]
	adrp	x22, .LANCHOR100
	ldrh	w20, [x23, #:lo12:.LANCHOR117]
	ldrh	w0, [x22, #:lo12:.LANCHOR100]
	add	x1, x2, x1, lsl 2
	sub	w0, w0, #1
	and	w0, w0, 65535
	mul	w20, w20, w24
	ldrb	w1, [x1, 2]
	and	w1, w1, 224
	cmp	w1, 160
	bne	.L3559
	adrp	x1, .LANCHOR84
	ldrb	w1, [x1, #:lo12:.LANCHOR84]
	and	w27, w1, 65535
	cmp	w1, 2
	orr	w20, w20, w1, lsl 24
	bne	.L3538
	adrp	x0, .LANCHOR91
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	sub	w0, w0, #1
	and	w0, w0, 65535
.L3538:
	adrp	x1, .LANCHOR35
	ldrb	w1, [x1, #:lo12:.LANCHOR35]
	cbnz	w1, .L3539
	adrp	x1, .LANCHOR36
	ldrb	w1, [x1, #:lo12:.LANCHOR36]
	cbz	w1, .L3537
.L3539:
	adrp	x0, .LANCHOR91
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	sub	w0, w0, #1
	and	w0, w0, 65535
.L3537:
	add	x25, x21, :lo12:.LANCHOR76
	orr	w20, w0, w20
	mov	w0, 1
	strb	w27, [x25, 6]
	strh	wzr, [x25, 2]
	strb	wzr, [x25, 4]
	strh	wzr, [x25, 26]
	strh	wzr, [x25, 28]
	bl	buf_alloc
	mov	x19, x0
	str	w20, [x0, 40]
	mov	w1, 1
	bl	sblk_read_page
	strh	wzr, [x25, 24]
	ldr	w0, [x19, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3540
.L3583:
	mov	x0, x19
	bl	zbuf_free
.L3581:
	mov	w0, -1
.L3527:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L3559:
	mov	w27, 1
	b	.L3537
.L3540:
	ldr	x7, [x19, 24]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	ldr	w1, [x7]
	cmp	w1, w0
	beq	.L3541
	mov	w2, 1578
.L3584:
	adrp	x1, .LANCHOR230
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR230
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L3583
.L3541:
	adrp	x0, .LANCHOR85
	ldrh	w26, [x22, #:lo12:.LANCHOR100]
	ldrb	w25, [x0, #:lo12:.LANCHOR85]
	adrp	x0, .LANCHOR224
	ldrb	w0, [x0, #:lo12:.LANCHOR224]
	mul	w26, w25, w26
	cmp	w0, 2
	mul	w26, w27, w26
	and	w26, w26, 65535
	bne	.L3542
	cmp	w27, 3
	bne	.L3542
	adrp	x1, .LANCHOR91
	adrp	x28, .LANCHOR221
	adrp	x27, .LANCHOR82
	ldrh	w1, [x1, #:lo12:.LANCHOR91]
	ldrh	w0, [x28, #:lo12:.LANCHOR221]
	ldr	x3, [x27, #:lo12:.LANCHOR82]
	ubfiz	w1, w1, 2, 14
	mul	w25, w25, w1
	ldr	x1, [x19, 8]
	sub	w25, w25, w0
	and	x0, x0, 65532
	and	w25, w25, 65535
	add	x0, x3, x0
	mov	w2, w25
	bl	ftl_memcpy
	ldr	x0, [x19, 24]
	ldr	w6, [x0, 4]
	cbz	w6, .L3543
	ldr	x0, [x19, 8]
	mov	w1, w25
	bl	js_hash
	cmp	w6, w0
	beq	.L3543
	mov	x0, x19
	bl	zbuf_free
	ldr	x0, [x19, 24]
	mov	w3, w25
.L3582:
	ldr	w1, [x0, 4]
	adrp	x0, .LC214
	ldr	w2, [x19, 40]
	add	x0, x0, :lo12:.LC214
	bl	printf
	b	.L3581
.L3543:
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbnz	w0, .L3544
	adrp	x0, .LANCHOR36
	ldrb	w0, [x0, #:lo12:.LANCHOR36]
	cbz	w0, .L3545
.L3544:
	sub	w0, w20, #1
	str	w0, [x19, 40]
.L3546:
	mov	w1, 1
	mov	x0, x19
	bl	sblk_read_page
	ldr	w0, [x19, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	beq	.L3583
	ldr	x0, [x19, 24]
	ldr	w1, [x0]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	cmp	w1, w0
	beq	.L3548
	mov	w2, 1619
	b	.L3584
.L3545:
	ldrh	w1, [x23, #:lo12:.LANCHOR117]
	ldrh	w0, [x22, #:lo12:.LANCHOR100]
	sub	w0, w0, #1
	and	w0, w0, 65535
	mul	w24, w1, w24
	orr	w0, w0, 33554432
	orr	w24, w0, w24
	str	w24, [x19, 40]
	b	.L3546
.L3548:
	ldrh	w2, [x28, #:lo12:.LANCHOR221]
	ldr	x0, [x27, #:lo12:.LANCHOR82]
	ldr	x1, [x19, 8]
.L3580:
	adrp	x20, .LANCHOR82
	bl	ftl_memcpy
	adrp	x22, .LANCHOR80
	adrp	x23, .LANCHOR31
	ldr	x24, [x20, #:lo12:.LANCHOR82]
	add	x22, x22, :lo12:.LANCHOR80
	add	x23, x23, :lo12:.LANCHOR31
	mov	x25, 0
.L3551:
	cmp	w26, w25
	bgt	.L3556
	mov	x0, x19
	bl	zbuf_free
	adrp	x0, .LANCHOR11
	ldrh	w1, [x21, #:lo12:.LANCHOR76]
	add	x3, x21, :lo12:.LANCHOR76
	mov	x19, x0
	ldr	x4, [x0, #:lo12:.LANCHOR11]
	ubfiz	x2, x1, 1, 16
	ldrh	w3, [x3, 24]
	ldrh	w2, [x4, x2]
	cmp	w2, w3
	beq	.L3557
	adrp	x0, .LC215
	add	x0, x0, :lo12:.LC215
	bl	printf
.L3557:
	add	x0, x21, :lo12:.LANCHOR76
	ldrh	w2, [x21, #:lo12:.LANCHOR76]
	ldr	x1, [x19, #:lo12:.LANCHOR11]
	ldrh	w3, [x0, 24]
	strh	w3, [x1, x2, lsl 1]
	strh	wzr, [x0, 28]
	ldrh	w0, [x0, 24]
	b	.L3527
.L3542:
	ldr	x6, [x19, 8]
	lsl	w20, w26, 2
	mov	w1, w20
	mov	x0, x6
	bl	js_hash
	ldr	w1, [x7, 4]
	cmp	w1, w0
	beq	.L3550
	mov	x0, x19
	bl	zbuf_free
	mov	w3, w20
	ldr	x0, [x19, 24]
	b	.L3582
.L3550:
	adrp	x0, .LANCHOR82
	mov	w2, w20
	mov	x1, x6
	ldr	x0, [x0, #:lo12:.LANCHOR82]
	b	.L3580
.L3556:
	ldr	w0, [x24, x25, lsl 2]
	cmn	w0, #1
	beq	.L3553
	bl	lpa_hash_get_ppa
	str	w0, [x29, 108]
	cmn	w0, #1
	bne	.L3554
	ldr	w0, [x24, x25, lsl 2]
	mov	w2, 0
	add	x1, x29, 108
	bl	pm_log2phys
.L3554:
	ldrb	w0, [x23]
	mov	w1, 24
	ldrh	w2, [x22]
	sub	w0, w1, w0
	ldr	w3, [x29, 108]
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	adrp	x1, .LANCHOR81
	sub	w0, w0, #1
	lsr	w2, w3, w2
	ldrb	w1, [x1, #:lo12:.LANCHOR81]
	and	w0, w0, w2
	ldrh	w2, [x21, #:lo12:.LANCHOR76]
	udiv	w0, w0, w1
	add	x1, x21, :lo12:.LANCHOR76
	cmp	w0, w2
	bne	.L3553
	ldrh	w0, [x1, 24]
	ldr	x4, [x20, #:lo12:.LANCHOR82]
	ubfiz	x2, x0, 2, 16
	add	w0, w0, 1
	str	w3, [x4, x2]
	strh	w0, [x1, 24]
.L3553:
	add	x25, x25, 1
	b	.L3551
	.size	gc_scan_src_blk, .-gc_scan_src_blk
	.section	.text.gc_scan_static_data,"ax",@progbits
	.align	2
	.global	gc_scan_static_data
	.type	gc_scan_static_data, %function
gc_scan_static_data:
	stp	x29, x30, [sp, -80]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x19, .LANCHOR12
	stp	x21, x22, [sp, 32]
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	w1, [x0, 544]
	str	x23, [sp, 48]
	cmn	w1, #1
	beq	.L3586
	adrp	x21, .LANCHOR231
	adrp	x22, .LC0
	add	x21, x21, :lo12:.LANCHOR231
	add	x22, x22, :lo12:.LC0
	mov	w20, 0
.L3594:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	mov	w2, 0
	add	x1, x29, 76
	ldr	w0, [x0, 544]
	bl	pm_log2phys
	ldr	w0, [x29, 76]
	cmn	w0, #1
	beq	.L3587
	mov	w0, 1
	bl	buf_alloc
	ldr	w1, [x29, 76]
	mov	x23, x0
	str	w1, [x0, 40]
	mov	w1, 1
	bl	sblk_read_page
	ldr	w0, [x23, 52]
	cmp	w0, 256
	bne	.L3588
	adrp	x0, .LANCHOR80
	ldr	w2, [x29, 76]
	ldrh	w3, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR31
	ldrb	w1, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	lsr	w2, w2, w3
	sub	w0, w0, w1
	mov	w1, 1
	sub	w0, w0, w3
	lsl	w0, w1, w0
	sub	w0, w0, #1
	and	w0, w0, w2
	adrp	x2, .LANCHOR81
	ldrb	w3, [x2, #:lo12:.LANCHOR81]
	mov	w2, 0
	udiv	w0, w0, w3
	bl	gc_add_sblk
.L3588:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	x1, [x23, 24]
	ldr	w0, [x0, 544]
	ldr	w1, [x1, 4]
	cmp	w1, w0
	beq	.L3589
	mov	w2, 2163
	mov	x1, x21
	mov	x0, x22
	bl	printf
.L3589:
	mov	x0, x23
	bl	zbuf_free
.L3587:
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	adrp	x2, .LANCHOR219
	ldr	w2, [x2, #:lo12:.LANCHOR219]
	ldr	w1, [x0, 544]
	add	w1, w1, 1
	str	w1, [x0, 544]
	cmp	w1, w2
	bcc	.L3590
	mov	w1, -1
	str	w1, [x0, 544]
	ldr	w1, [x0, 548]
	add	w1, w1, 1
	str	w1, [x0, 548]
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
.L3585:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldr	x23, [sp, 48]
	ldp	x29, x30, [sp], 80
	ret
.L3590:
	ldr	w0, [x29, 76]
	cmn	w0, #1
	bne	.L3585
	adrp	x1, .LANCHOR221
	add	w0, w20, 1
	and	w0, w0, 65535
	ldrh	w1, [x1, #:lo12:.LANCHOR221]
	cmp	w20, w1, lsr 2
	bcs	.L3585
	mov	w20, w0
	b	.L3594
.L3586:
	ldr	w1, [x0, 536]
	adrp	x3, .LANCHOR69
	ldr	w2, [x0, 12]
	add	w1, w1, 12959744
	add	w1, w1, 256
	cmp	w2, w1
	bhi	.L3596
	ldr	x4, [x3, #:lo12:.LANCHOR69]
	mov	w5, 5000
	ldr	w1, [x0, 540]
	add	w1, w1, w5
	ldr	w4, [x4, 44]
	cmp	w4, w1
	bls	.L3585
.L3596:
	ldr	x1, [x3, #:lo12:.LANCHOR69]
	ldr	w1, [x1, 44]
	str	w1, [x0, 540]
	str	w2, [x0, 536]
	str	wzr, [x0, 544]
	b	.L3585
	.size	gc_scan_static_data, .-gc_scan_static_data
	.section	.text.ftl_sblk_dump,"ax",@progbits
	.align	2
	.global	ftl_sblk_dump
	.type	ftl_sblk_dump, %function
ftl_sblk_dump:
	sub	sp, sp, #288
	and	x0, x0, 65535
	stp	x29, x30, [sp, 48]
	add	x29, sp, 48
	stp	x23, x24, [sp, 96]
	adrp	x24, .LANCHOR9
	lsl	x23, x0, 2
	stp	x19, x20, [sp, 64]
	str	x0, [x29, 144]
	mov	x20, x0
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	str	x1, [x29, 160]
	add	x1, x0, x23
	stp	x21, x22, [sp, 80]
	stp	x25, x26, [sp, 112]
	ldr	w5, [x0, x23]
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ldrh	w4, [x0, x23]
	adrp	x0, .LC216
	stp	x27, x28, [sp, 128]
	ubfx	x5, x5, 11, 8
	ubfx	x3, x2, 3, 2
	and	w4, w4, 2047
	ubfx	x2, x2, 5, 3
	add	x0, x0, :lo12:.LC216
	bl	printf
	mov	w0, 65535
	cmp	w20, w0
	beq	.L3625
	adrp	x0, .LANCHOR8
	ldrh	w0, [x0, #:lo12:.LANCHOR8]
	cmp	w0, w20
	bls	.L3625
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	add	x0, x0, x23
	ldrb	w0, [x0, 2]
	and	w0, w0, 224
	cmp	w0, 160
	bne	.L3626
	adrp	x0, .LANCHOR84
	ldrb	w25, [x0, #:lo12:.LANCHOR84]
.L3604:
	add	x28, x29, 240
	adrp	x21, .LANCHOR100
	mov	w0, w20
	mov	w19, 0
	strh	w20, [x28, -32]!
	add	x1, x28, 16
	bl	ftl_get_blk_list_in_sblk
	ldrh	w2, [x21, #:lo12:.LANCHOR100]
	and	w1, w0, 255
	strb	w1, [x29, 217]
	and	w4, w0, 255
	strb	wzr, [x29, 213]
	mov	w3, w25
	strh	wzr, [x29, 210]
	adrp	x0, .LC217
	mul	w1, w1, w2
	strh	wzr, [x29, 218]
	strh	w1, [x29, 214]
	add	x0, x0, :lo12:.LC217
	ldr	x1, [x24, #:lo12:.LANCHOR9]
	add	x1, x1, x23
	ldrb	w2, [x1, 2]
	mov	w1, w20
	ubfx	x2, x2, 5, 3
	bl	printf
	mov	w0, 1
	bl	buf_alloc
	str	x21, [x29, 136]
	mov	x26, x0
	stp	wzr, wzr, [x29, 168]
	adrp	x0, .LANCHOR117
	str	wzr, [x29, 176]
	add	x0, x0, :lo12:.LANCHOR117
	str	x0, [x29, 112]
.L3605:
	ldr	x0, [x29, 136]
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w0, w19
	bls	.L3622
	lsl	w0, w19, 1
	mov	w22, 0
	sub	w1, w0, #1
	add	w0, w0, w19
	sub	w0, w0, #1
	stp	w1, w0, [x29, 152]
	adrp	x0, .LC161
	add	x0, x0, :lo12:.LC161
	str	x0, [x29, 120]
	b	.L3623
.L3626:
	mov	w25, 1
	b	.L3604
.L3619:
	ldr	x0, [x29, 128]
	ldrh	w11, [x28, x0]
	mov	w0, 65535
	cmp	w11, w0
	beq	.L3606
	ldr	x0, [x29, 112]
	cmp	w25, 3
	ldrh	w8, [x0]
	mul	w1, w8, w11
	add	w0, w21, w1
	bne	.L3607
	adrp	x2, .LANCHOR35
	ldrb	w2, [x2, #:lo12:.LANCHOR35]
	cbz	w2, .L3608
	adrp	x1, .LANCHOR84
	ldrb	w8, [x1, #:lo12:.LANCHOR84]
	ldr	w1, [x29, 156]
.L3635:
	add	w0, w0, w1
	orr	w27, w0, w8, lsl 24
	b	.L3609
.L3608:
	adrp	x2, .LANCHOR36
	lsl	w8, w21, 24
	ldrb	w2, [x2, #:lo12:.LANCHOR36]
	cbz	w2, .L3610
	ldr	w1, [x29, 156]
	add	w0, w0, w1
	orr	w27, w0, w8
.L3609:
	str	w27, [x26, 40]
	mov	w1, 1
	str	w11, [x29, 100]
	mov	x0, x26
	bl	sblk_read_page
	ldr	x1, [x26, 24]
	mov	w3, w27
	ldr	x0, [x26, 8]
	ldr	w12, [x26, 52]
	ldr	w11, [x29, 100]
	ldr	w2, [x1, 12]
	mov	w4, w12
	str	w2, [sp, 32]
	str	w12, [x29, 104]
	ldr	w2, [x1, 8]
	str	w2, [sp, 24]
	ldr	w2, [x1, 4]
	str	w2, [sp, 16]
	mov	w2, w19
	ldr	w1, [x1]
	str	w1, [sp, 8]
	ldr	w1, [x0, 12]
	str	w1, [sp]
	mov	w1, w11
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	ldr	x0, [x29, 120]
	bl	printf
	ldr	w12, [x29, 104]
	mov	w1, 32
	ldr	w0, [x29, 168]
	cmp	w12, 512
	ccmn	w12, #1, 4, ne
	csinc	w0, w0, wzr, ne
	str	w0, [x29, 168]
	ldr	x0, [x24, #:lo12:.LANCHOR9]
	add	x0, x0, x23
	ldrb	w0, [x0, 2]
	and	w0, w0, 224
	cmp	w0, 224
	ccmp	w0, w1, 4, ne
	beq	.L3606
	ldr	x0, [x26, 24]
	ldr	w0, [x0, 4]
	bl	lpa_hash_get_ppa
	str	w0, [x29, 204]
	cmn	w0, #1
	bne	.L3613
	ldr	x0, [x26, 24]
	mov	w2, 0
	add	x1, x29, 204
	ldr	w0, [x0, 4]
	bl	pm_log2phys
.L3613:
	ldr	w0, [x29, 204]
	cmp	w27, w0
	bne	.L3614
	ldr	w0, [x29, 172]
	mov	w1, w27
	add	w0, w0, 1
	str	w0, [x29, 172]
	ldr	x0, [x26, 24]
	ldr	w3, [x29, 172]
	ldr	w2, [x0, 4]
	adrp	x0, .LC218
	add	x0, x0, :lo12:.LC218
	bl	printf
.L3614:
	ldr	x0, [x29, 160]
	cbz	x0, .L3616
	ldr	x0, [x29, 176]
	ubfiz	x3, x0, 2, 32
	ldr	x0, [x29, 160]
	ldr	w2, [x0, x3]
	ldr	x0, [x26, 24]
	ldr	w0, [x0, 4]
	cmp	w0, w2
	beq	.L3617
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3617
	ldr	w1, [x29, 176]
	adrp	x0, .LC219
	str	x3, [x29, 104]
	add	x0, x0, :lo12:.LC219
	bl	printf
	ldr	x3, [x29, 104]
.L3617:
	ldr	x1, [x26, 24]
	ldr	x0, [x29, 160]
	ldr	w1, [x1, 4]
	ldr	w0, [x0, x3]
	cmp	w1, w0
	beq	.L3616
	cmn	w0, #1
	beq	.L3616
	adrp	x1, .LANCHOR232
	adrp	x0, .LC0
	mov	w2, 1580
	add	x1, x1, :lo12:.LANCHOR232
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3616:
	ldr	w0, [x29, 176]
	add	w0, w0, 1
	str	w0, [x29, 176]
.L3606:
	add	w21, w21, 1
	and	w21, w21, 65535
.L3621:
	cmp	w25, w21
	bcs	.L3619
	add	w22, w22, 1
	and	w22, w22, 65535
.L3623:
	ldrb	w0, [x29, 217]
	cmp	w0, w22
	bls	.L3620
	sxtw	x0, w22
	mov	w21, 1
	add	x0, x0, 8
	lsl	x0, x0, 1
	str	x0, [x29, 128]
	b	.L3621
.L3610:
	add	w1, w19, w1
	orr	w27, w8, w1
	b	.L3609
.L3607:
	cmp	w25, 2
	bne	.L3611
	adrp	x1, .LANCHOR84
	ldrb	w8, [x1, #:lo12:.LANCHOR84]
	ldr	w1, [x29, 152]
	b	.L3635
.L3611:
	add	w27, w19, w1
	b	.L3609
.L3620:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L3605
.L3622:
	mov	x0, x26
	bl	zbuf_free
	adrp	x0, .LANCHOR11
	ldr	x1, [x29, 144]
	ldr	w3, [x29, 172]
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrh	w2, [x0, x1, lsl 1]
	mov	w1, w20
	adrp	x0, .LC220
	add	x0, x0, :lo12:.LC220
	bl	printf
	ldr	w0, [x29, 168]
.L3602:
	ldp	x19, x20, [sp, 64]
	ldp	x21, x22, [sp, 80]
	ldp	x23, x24, [sp, 96]
	ldp	x25, x26, [sp, 112]
	ldp	x27, x28, [sp, 128]
	ldp	x29, x30, [sp, 48]
	add	sp, sp, 288
	ret
.L3625:
	mov	w0, 0
	b	.L3602
	.size	ftl_sblk_dump, .-ftl_sblk_dump
	.section	.text.zftl_read,"ax",@progbits
	.align	2
	.global	zftl_read
	.type	zftl_read, %function
zftl_read:
	sub	sp, sp, #192
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	stp	x19, x20, [sp, 32]
	mov	w19, w0
	adrp	x0, .LANCHOR19
	stp	x21, x22, [sp, 48]
	stp	x23, x24, [sp, 64]
	mov	w20, w1
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	mov	w23, w2
	stp	x25, x26, [sp, 80]
	mov	x22, x3
	stp	x27, x28, [sp, 96]
	tbz	x0, 12, .L3637
	mov	w3, w2
	adrp	x0, .LC221
	mov	w2, w1
	add	x0, x0, :lo12:.LC221
	mov	w1, w19
	bl	printf
.L3637:
	cbnz	w19, .L3638
	adrp	x0, .LANCHOR73
	mov	w19, 24576
	ldr	w0, [x0, #:lo12:.LANCHOR73]
.L3639:
	cmp	w0, w20
	ccmp	w0, w23, 0, hi
	bcc	.L3672
	add	w1, w20, w23
	cmp	w0, w1
	bcc	.L3672
	adrp	x1, .LANCHOR69
	adrp	x24, .LANCHOR68
	add	w19, w19, w20
	str	x1, [x29, 112]
	ldr	x2, [x1, #:lo12:.LANCHOR69]
	ldr	w0, [x2, 24]
	add	w0, w0, w23
	str	w0, [x2, 24]
	ldrb	w0, [x24, #:lo12:.LANCHOR68]
	udiv	w2, w19, w0
	stp	wzr, w2, [x29, 152]
	add	w2, w23, w19
	str	w2, [x29, 148]
	sub	w2, w2, #1
	udiv	w0, w2, w0
	ldr	w2, [x29, 156]
	mov	x21, x2
	sub	w26, w0, w2
	str	w0, [x29, 144]
	add	w26, w26, 1
	adrp	x0, .LANCHOR72
	add	x28, x0, :lo12:.LANCHOR72
.L3641:
	cbnz	w26, .L3669
	ldr	w0, [x29, 152]
.L3636:
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 192
	ret
.L3638:
	cmp	w19, 3
	bhi	.L3672
	lsl	w19, w19, 13
	mov	w0, 8192
	b	.L3639
.L3669:
	ldr	w0, [x29, 156]
	ldrb	w1, [x24, #:lo12:.LANCHOR68]
	cmp	w21, w0
	ldr	w0, [x29, 144]
	and	w25, w1, 65535
	ccmp	w21, w0, 4, ne
	bne	.L3673
	ldr	w0, [x29, 156]
	cmp	w21, w0
	bne	.L3643
	udiv	w3, w19, w1
	and	w0, w23, 65535
	msub	w1, w3, w1, w19
	and	w27, w1, 65535
	sub	w25, w25, w27
	and	w25, w25, 65535
	cmp	w23, w25
	csel	w25, w0, w25, cc
.L3642:
	adrp	x20, .LANCHOR55
	add	x1, x20, :lo12:.LANCHOR55
	add	x1, x1, 2
	mov	w0, 0
.L3646:
	ldr	w2, [x1, 34]
	cmp	w21, w2
	bne	.L3644
	ldrb	w2, [x1]
	tbz	x2, 3, .L3644
	add	x1, x20, :lo12:.LANCHOR55
	ubfiz	x0, x0, 6, 32
	add	x0, x1, x0
	lsl	w2, w25, 9
	ubfiz	x25, x25, 9, 16
	ubfiz	x27, x27, 9, 16
	ldr	x1, [x0, 8]
	mov	x0, x22
	add	x22, x22, x25
	add	x1, x1, x27
	bl	ftl_memcpy
.L3645:
	add	w21, w21, 1
	sub	w26, w26, #1
.L3652:
	adrp	x0, .LANCHOR57
	ldrb	w0, [x0, #:lo12:.LANCHOR57]
	cmp	w0, 2
	bls	.L3653
	cbnz	w26, .L3641
.L3653:
	adrp	x0, .LANCHOR72
	ldrb	w1, [x0, #:lo12:.LANCHOR72]
	cbz	w1, .L3641
	adrp	x25, .LANCHOR71
	add	x0, x20, :lo12:.LANCHOR55
	ldrb	w2, [x25, #:lo12:.LANCHOR71]
	add	x0, x0, x2, lsl 6
	bl	sblk_read_page
	adrp	x0, .LANCHOR233
	add	x0, x0, :lo12:.LANCHOR233
	str	x0, [x29, 128]
	adrp	x0, .LC0
	add	x0, x0, :lo12:.LC0
	str	x0, [x29, 120]
.L3655:
	ldrb	w0, [x28]
	cbnz	w0, .L3668
	mov	w0, -1
	strb	wzr, [x28]
	strb	w0, [x25, #:lo12:.LANCHOR71]
	b	.L3641
.L3643:
	ldr	w0, [x29, 148]
	msub	w25, w1, w21, w0
	and	w25, w25, 255
.L3673:
	mov	w27, 0
	b	.L3642
.L3644:
	add	w0, w0, 1
	add	x1, x1, 64
	cmp	w0, 16
	bne	.L3646
	mov	w0, w21
	bl	lpa_hash_get_ppa
	str	w0, [x29, 172]
	cmn	w0, #1
	bne	.L3647
	mov	w2, 0
	add	x1, x29, 172
	mov	w0, w21
	bl	pm_log2phys
.L3647:
	ldr	w0, [x29, 172]
	cmn	w0, #1
	bne	.L3648
	add	x27, x24, :lo12:.LANCHOR68
	mov	w25, 0
.L3649:
	ldrb	w0, [x27]
	cmp	w25, w0
	bcs	.L3645
	madd	w0, w21, w0, w25
	cmp	w19, w0
	bhi	.L3650
	ldr	w1, [x29, 148]
	cmp	w1, w0
	bls	.L3650
	mov	x0, x22
	add	x22, x22, 512
	mov	w2, 512
	mov	w1, 0
	bl	ftl_memset
.L3650:
	add	w25, w25, 1
	b	.L3649
.L3648:
	mov	w0, 0
	bl	buf_alloc
	cbz	x0, .L3652
	ldr	x2, [x29, 112]
	ldr	x4, [x2, #:lo12:.LANCHOR69]
	ldr	w2, [x4, 40]
	add	w2, w2, 1
	str	w2, [x4, 40]
	ldr	w2, [x29, 172]
	strb	w25, [x0, 56]
	ubfiz	x25, x25, 9, 16
	str	x22, [x0, 16]
	add	x22, x22, x25
	strb	w27, [x0, 57]
	stp	w21, w2, [x0, 36]
	str	w2, [x0, 44]
	bl	zftl_add_read_buf
	b	.L3645
.L3668:
	ldrb	w0, [x25, #:lo12:.LANCHOR71]
	cmp	w0, 255
	bne	.L3656
	ldp	x0, x1, [x29, 120]
	mov	w2, 1280
	bl	printf
.L3656:
	ldrb	w27, [x25, #:lo12:.LANCHOR71]
	add	x0, x20, :lo12:.LANCHOR55
	ubfiz	x1, x27, 6, 8
	lsl	x2, x27, 6
	add	x1, x0, x1
	str	x1, [x29, 136]
	add	x1, x0, x2
	ldrb	w0, [x0, x2]
	strb	w0, [x25, #:lo12:.LANCHOR71]
	ldr	w10, [x1, 52]
	cmn	w10, #1
	bne	.L3657
	adrp	x0, .LANCHOR12
	str	w10, [x29, 152]
	ldr	x1, [x0, #:lo12:.LANCHOR12]
	ldr	w0, [x1, 552]
	add	w0, w0, 1
	str	w0, [x1, 552]
.L3658:
	add	x0, x20, :lo12:.LANCHOR55
	add	x0, x0, x27, lsl 6
	ldr	x3, [x0, 24]
	ldr	w0, [x0, 36]
	ldr	w1, [x3, 4]
	cmp	w1, w0
	bne	.L3659
	cmn	w10, #1
	bne	.L3660
.L3659:
	add	x0, x20, :lo12:.LANCHOR55
	ldrb	w4, [x24, #:lo12:.LANCHOR68]
	add	x0, x0, x27, lsl 6
	mov	w5, 1
	ldrb	w1, [x0, 56]
	ldp	x2, x7, [x0, 8]
	cmp	w1, w4
	ldr	w1, [x0, 40]
	adrp	x0, .LANCHOR31
	csel	x2, x7, x2, cs
	ldrb	w6, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w6
	lsl	w5, w5, w6
	sub	w5, w5, #1
	lsl	w6, w5, w0
	lsr	w0, w1, w0
	bic	w1, w1, w6
	and	w0, w0, w5
	bl	flash_read_page_en
	mov	w10, w0
.L3660:
	add	x1, x20, :lo12:.LANCHOR55
	add	x1, x1, x27, lsl 6
	ldr	x0, [x1, 24]
	ldr	w3, [x1, 36]
	ldr	w1, [x0, 4]
	cmp	w1, w3
	bne	.L3662
	cmn	w10, #1
	bne	.L3663
.L3662:
	adrp	x1, .LANCHOR12
	add	x11, x20, :lo12:.LANCHOR55
	add	x11, x11, x27, lsl 6
	str	w10, [x29, 108]
	ldr	x2, [x1, #:lo12:.LANCHOR12]
	str	x11, [x29, 96]
	ldr	w1, [x2, 552]
	add	w1, w1, 1
	str	w1, [x2, 552]
	ldrb	w1, [x11, 1]
	ldr	w2, [x0, 12]
	str	w2, [sp]
	mov	w2, w10
	ldp	w5, w6, [x0]
	ldr	w7, [x0, 8]
	adrp	x0, .LC223
	ldr	w4, [x11, 40]
	add	x0, x0, :lo12:.LC223
	bl	printf
	adrp	x0, .LANCHOR80
	ldr	x11, [x29, 96]
	ldrh	w2, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR31
	ldrb	w1, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w1
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x11, 40]
	sub	w0, w0, #1
	lsr	w1, w1, w2
	and	w0, w0, w1
	adrp	x1, .LANCHOR81
	ldrb	w2, [x1, #:lo12:.LANCHOR81]
	mov	x1, 0
	udiv	w0, w0, w2
	bl	ftl_sblk_dump
	ldr	w10, [x29, 108]
.L3663:
	add	x0, x20, :lo12:.LANCHOR55
	add	x0, x0, x27, lsl 6
	ldr	x1, [x0, 24]
	ldr	w0, [x0, 36]
	ldr	w1, [x1, 4]
	cmp	w1, w0
	bne	.L3664
	cmn	w10, #1
	bne	.L3665
.L3664:
	ldp	x0, x1, [x29, 120]
	mov	w2, 1316
	bl	printf
.L3665:
	add	x0, x20, :lo12:.LANCHOR55
	add	x8, x0, x27, lsl 6
	ldrb	w0, [x24, #:lo12:.LANCHOR68]
	ldrb	w2, [x8, 56]
	cmp	w0, w2
	bls	.L3666
	ldrb	w0, [x8, 57]
	lsl	w2, w2, 9
	ldr	x1, [x8, 8]
	ubfiz	x0, x0, 9, 8
	add	x1, x1, x0
	ldr	x0, [x8, 16]
	bl	ftl_memcpy
.L3667:
	ldr	x1, [x29, 136]
	adrp	x0, .LANCHOR62
	add	x0, x0, :lo12:.LANCHOR62
	bl	buf_remove_buf
	ldr	x0, [x29, 136]
	bl	zbuf_free
	ldrb	w0, [x28]
	sub	w0, w0, #1
	strb	w0, [x28]
	b	.L3655
.L3657:
	cmp	w10, 256
	bne	.L3658
	adrp	x2, .LANCHOR31
	adrp	x0, .LANCHOR80
	mov	w4, 24
	mov	w5, 1
	ldrb	w2, [x2, #:lo12:.LANCHOR31]
	ldrh	w0, [x0, #:lo12:.LANCHOR80]
	sub	w4, w4, w2
	str	w5, [x29, 96]
	ldp	w2, w3, [x1, 36]
	sub	w4, w4, w0
	lsl	w4, w5, w4
	sub	w4, w4, #1
	lsr	w0, w3, w0
	and	w4, w4, w0
	adrp	x0, .LANCHOR81
	ldrb	w0, [x0, #:lo12:.LANCHOR81]
	udiv	w4, w4, w0
	adrp	x0, .LC222
	add	x0, x0, :lo12:.LC222
	stp	w10, w4, [x29, 104]
	and	w1, w4, 65535
	bl	printf
	ldr	w5, [x29, 96]
	mov	w2, 0
	ldr	w4, [x29, 108]
	mov	w1, w5
	mov	w0, w4
	bl	gc_add_sblk
	ldr	w10, [x29, 104]
	b	.L3658
.L3666:
	ldrb	w0, [x8, 2]
	and	w0, w0, -9
	strb	w0, [x8, 2]
	b	.L3667
.L3672:
	mov	w0, -1
	b	.L3636
	.size	zftl_read, .-zftl_read
	.section	.text.zftl_sys_read,"ax",@progbits
	.align	2
	.global	zftl_sys_read
	.type	zftl_sys_read, %function
zftl_sys_read:
	mov	x3, x2
	mov	w2, w1
	mov	w1, w0
	mov	w0, 2
	b	zftl_read
	.size	zftl_sys_read, .-zftl_sys_read
	.section	.text.StorageSysDataLoad,"ax",@progbits
	.align	2
	.global	StorageSysDataLoad
	.type	StorageSysDataLoad, %function
StorageSysDataLoad:
	stp	x29, x30, [sp, -32]!
	mov	w2, 512
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x19, x1
	mov	w20, w0
	mov	w1, 0
	mov	x0, x19
	bl	ftl_memset
	mov	x3, x19
	mov	w1, w20
	ldp	x19, x20, [sp, 16]
	mov	w2, 1
	ldp	x29, x30, [sp], 32
	mov	w0, 2
	b	zftl_read
	.size	StorageSysDataLoad, .-StorageSysDataLoad
	.section	.text.FlashBootVendorRead,"ax",@progbits
	.align	2
	.global	FlashBootVendorRead
	.type	FlashBootVendorRead, %function
FlashBootVendorRead:
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	mov	w0, 2
	b	zftl_read
	.size	FlashBootVendorRead, .-FlashBootVendorRead
	.section	.text.ftl_read,"ax",@progbits
	.align	2
	.global	ftl_read
	.type	ftl_read, %function
ftl_read:
	and	w0, w0, 255
	b	zftl_read
	.size	ftl_read, .-ftl_read
	.section	.text.ftl_vendor_read,"ax",@progbits
	.align	2
	.global	ftl_vendor_read
	.type	ftl_vendor_read, %function
ftl_vendor_read:
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	mov	w0, 2
	b	zftl_read
	.size	ftl_vendor_read, .-ftl_vendor_read
	.section	.text.zftl_vendor_read,"ax",@progbits
	.align	2
	.global	zftl_vendor_read
	.type	zftl_vendor_read, %function
zftl_vendor_read:
	b	ftl_vendor_read
	.size	zftl_vendor_read, .-zftl_vendor_read
	.section	.text.ftl_update_l2p_map,"ax",@progbits
	.align	2
	.global	ftl_update_l2p_map
	.type	ftl_update_l2p_map, %function
ftl_update_l2p_map:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x21, x22, [sp, 32]
	mov	x22, x0
	stp	x19, x20, [sp, 16]
	adrp	x0, .LANCHOR100
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	ldrh	w23, [x0, #:lo12:.LANCHOR100]
	ldrb	w0, [x22, 9]
	ldrh	w19, [x22, 12]
	mul	w23, w23, w0
	adrp	x0, .LANCHOR123
	str	x0, [x29, 104]
	ldr	x1, [x0, #:lo12:.LANCHOR123]
	add	x19, x1, x19, lsl 2
	add	x1, x19, x23, sxtw 2
	ldr	w1, [x1, -4]
	cmn	w1, #1
	beq	.L3696
	adrp	x1, .LANCHOR234
	adrp	x0, .LC0
	mov	w2, 2003
	add	x1, x1, :lo12:.LANCHOR234
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3696:
	adrp	x27, .LANCHOR68
	mov	x24, 0
	add	x0, x27, :lo12:.LANCHOR68
	mov	w21, 0
	str	x0, [x29, 96]
.L3697:
	cmp	w24, w23
	blt	.L3703
	adrp	x0, .LANCHOR19
	adrp	x19, .LANCHOR11
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L3704
	ldrh	w1, [x22]
	ldr	x2, [x19, #:lo12:.LANCHOR11]
	ubfiz	x0, x1, 1, 16
	ldrh	w3, [x2, x0]
	adrp	x0, .LC227
	mov	w2, w21
	add	x0, x0, :lo12:.LC227
	bl	printf
.L3704:
	ldrh	w1, [x22]
	ldr	x0, [x19, #:lo12:.LANCHOR11]
	ldp	x23, x24, [sp, 48]
	ldp	x19, x20, [sp, 16]
	strh	w21, [x0, x1, lsl 1]
	ldp	x25, x26, [sp, 64]
	ldp	x21, x22, [sp, 32]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
.L3703:
	ldr	w2, [x19, x24, lsl 2]
	cmn	w2, #1
	beq	.L3698
	ldrb	w20, [x27, #:lo12:.LANCHOR68]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	lsl	w20, w20, 7
	udiv	w20, w2, w20
	and	w20, w20, 65535
	tbz	x0, 12, .L3699
	adrp	x0, .LC224
	mov	w3, w24
	mov	w1, w20
	add	x0, x0, :lo12:.LC224
	bl	printf
.L3699:
	adrp	x25, .LANCHOR117
	adrp	x26, .LC225
	mov	x28, x24
	add	x25, x25, :lo12:.LANCHOR117
	add	x26, x26, :lo12:.LC225
.L3702:
	ldr	w1, [x19, x28, lsl 2]
	cmn	w1, #1
	beq	.L3700
	ldr	x0, [x29, 96]
	ldrb	w2, [x0]
	lsl	w2, w2, 7
	udiv	w1, w1, w2
	cmp	w20, w1, uxth
	bne	.L3700
	ldrb	w0, [x22, 9]
	sdiv	w1, w28, w0
	msub	w0, w1, w0, w28
	add	x0, x22, x0, sxtw 1
	ldrh	w2, [x0, 16]
	ldrh	w0, [x25]
	madd	w2, w2, w0, w1
	mov	x0, x26
	str	w2, [x29, 124]
	ldr	w1, [x19, x28, lsl 2]
	bl	pm_ppa_update_check
	cbz	w0, .L3701
	ldr	x0, [x29, 104]
	mov	w3, w23
	mov	w2, 4
	ldr	x1, [x0, #:lo12:.LANCHOR123]
	adrp	x0, .LC226
	add	x0, x0, :lo12:.LC226
	bl	rknand_print_hex
.L3701:
	ldr	w0, [x19, x28, lsl 2]
	add	w21, w21, 1
	mov	w2, 1
	add	x1, x29, 124
	and	w21, w21, 65535
	bl	pm_log2phys
	mov	w0, -1
	str	w0, [x19, x28, lsl 2]
.L3700:
	add	x28, x28, 1
	cmp	w23, w28
	bgt	.L3702
.L3698:
	add	x24, x24, 1
	b	.L3697
	.size	ftl_update_l2p_map, .-ftl_update_l2p_map
	.section	.text.ftl_alloc_new_data_sblk,"ax",@progbits
	.align	2
	.global	ftl_alloc_new_data_sblk
	.type	ftl_alloc_new_data_sblk, %function
ftl_alloc_new_data_sblk:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	x20, x0
	str	x21, [sp, 32]
	ldrh	w21, [x0]
	bl	ftl_update_l2p_map
	bl	pm_flush
	ldrh	w0, [x20]
	mov	w1, 65535
	cmp	w0, w1
	beq	.L3726
	bl	zftl_insert_data_list
.L3726:
	adrp	x19, .LANCHOR12
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	add	x0, x0, 16
	cmp	x20, x0
	mov	x0, x20
	cset	w1, ne
	add	w1, w1, 2
	bl	ftl_open_sblk_init
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	w0, [x0, 560]
	cmp	w0, w21
	bne	.L3728
	mov	w20, 65535
	cmp	w21, w20
	beq	.L3728
	mov	w1, w21
	adrp	x0, .LC228
	add	x0, x0, :lo12:.LC228
	bl	printf
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	ldr	w0, [x0, 564]
	bl	gc_mark_bad_ppa
	ldr	x0, [x19, #:lo12:.LANCHOR12]
	mov	w1, -1
	str	w20, [x0, 560]
	str	w1, [x0, 564]
.L3728:
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	bl	lpa_rebuild_hash
	ldr	x21, [sp, 32]
	mov	w0, 0
	ldp	x19, x20, [sp, 16]
	ldp	x29, x30, [sp], 48
	ret
	.size	ftl_alloc_new_data_sblk, .-ftl_alloc_new_data_sblk
	.section	.text.ftl_write_commit,"ax",@progbits
	.align	2
	.global	ftl_write_commit
	.type	ftl_write_commit, %function
ftl_write_commit:
	stp	x29, x30, [sp, -160]!
	adrp	x0, .LANCHOR55
	add	x29, sp, 0
	stp	x23, x24, [sp, 48]
	add	x24, x0, :lo12:.LANCHOR55
	add	x0, x24, 1026
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	str	x0, [x29, 104]
.L3732:
	adrp	x2, .LANCHOR66
	ldrb	w1, [x2, #:lo12:.LANCHOR66]
	cbz	w1, .L3734
	adrp	x3, .LANCHOR65
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
	sub	w1, w1, #1
	ldrb	w4, [x3, #:lo12:.LANCHOR65]
	strb	w1, [x2, #:lo12:.LANCHOR66]
	ubfiz	x5, x4, 6, 8
	add	x5, x0, x5
	stp	x4, x5, [x29, 120]
	lsl	x4, x4, 6
	add	x5, x0, x4
	ldrb	w0, [x0, x4]
	strb	w0, [x3, #:lo12:.LANCHOR65]
	adrp	x0, .LANCHOR219
	ldr	w2, [x5, 36]
	mov	x19, x0
	ldr	w1, [x0, #:lo12:.LANCHOR219]
	cmp	w2, w1
	bcc	.L3736
	adrp	x1, .LANCHOR235
	adrp	x0, .LC0
	mov	w2, 602
	add	x1, x1, :lo12:.LANCHOR235
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3736:
	ldr	x0, [x29, 120]
	ldr	w1, [x19, #:lo12:.LANCHOR219]
	add	x0, x24, x0, lsl 6
	ldr	w22, [x0, 36]
	cmp	w22, w1
	bcc	.L3737
	ldr	x0, [x29, 128]
	bl	zbuf_free
	mov	w0, -1
.L3731:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 160
	ret
.L3737:
	ldrb	w21, [x0, 57]
	ldrb	w20, [x0, 56]
	ldr	x26, [x0, 8]
	ldr	x23, [x0, 24]
	adrp	x0, .LANCHOR183
	str	x0, [x29, 112]
	ldrb	w1, [x0, #:lo12:.LANCHOR183]
	cbz	w1, .L3739
	adrp	x0, .LANCHOR184
	ldrb	w19, [x0, #:lo12:.LANCHOR184]
	add	x19, x24, x19, lsl 6
.L3740:
	ldrb	w0, [x19]
	cmp	w0, 255
	bne	.L3741
	ldr	w0, [x19, 36]
	cmp	w22, w0
	bne	.L3739
	ldr	x0, [x19, 8]
	ubfiz	x21, x21, 9, 8
	lsl	w2, w20, 9
	add	x1, x26, x21
	add	x0, x0, x21
	bl	ftl_memcpy
	adrp	x0, .LANCHOR68
	ldr	x2, [x19, 8]
	ldr	x1, [x19, 24]
	ldrb	w0, [x0, #:lo12:.LANCHOR68]
	add	x1, x1, 16
	sub	w0, w0, #2
	lsl	w0, w0, 7
	add	x2, x2, x0, sxtw 2
	mov	w0, 2
	bl	ftl_debug_info_fill
	ldr	x0, [x29, 128]
	bl	zbuf_free
	b	.L3732
.L3741:
	ubfiz	x19, x0, 6, 8
	add	x19, x24, x19
	b	.L3740
.L3739:
	mov	w0, w22
	bl	lpa_hash_get_ppa
	str	w0, [x29, 156]
	cmn	w0, #1
	bne	.L3743
	mov	w2, 0
	add	x1, x29, 156
	mov	w0, w22
	bl	pm_log2phys
.L3743:
	adrp	x27, .LANCHOR12
	ldr	w2, [x29, 156]
	add	x0, x24, 2
	mov	w3, 0
	ldr	x19, [x27, #:lo12:.LANCHOR12]
	mov	x25, 0
	add	x19, x19, 16
.L3745:
	ldr	w1, [x0, 34]
	cmp	w22, w1
	bne	.L3744
	ldrb	w1, [x0]
	tbz	x1, 3, .L3744
	ldr	w2, [x0, 38]
	and	w1, w1, -9
	ldr	x25, [x0, 6]
	mov	w3, 1
	strb	w1, [x0]
.L3744:
	ldr	x1, [x29, 104]
	add	x0, x0, 64
	cmp	x0, x1
	bne	.L3745
	cbz	w3, .L3746
	str	w2, [x29, 156]
.L3746:
	adrp	x28, .LANCHOR68
	str	x28, [x29, 136]
	ldrb	w0, [x28, #:lo12:.LANCHOR68]
	cmp	w20, w0
	bcs	.L3772
	add	w20, w21, w20
	cbz	x25, .L3748
	cbz	w21, .L3749
	lsl	w2, w21, 9
	mov	x1, x25
	mov	x0, x26
	bl	ftl_memcpy
	ldr	x19, [x27, #:lo12:.LANCHOR12]
	add	x19, x19, 48
.L3749:
	ldr	x0, [x29, 136]
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	cmp	w20, w2
	bcc	.L3750
	ldr	x19, [x27, #:lo12:.LANCHOR12]
	add	x19, x19, 16
.L3772:
	mov	w25, 0
	b	.L3747
.L3750:
	ubfiz	x0, x20, 9, 9
	sub	w2, w2, w20
	add	x1, x25, x0
	lsl	w2, w2, 9
	add	x0, x26, x0
	bl	ftl_memcpy
	b	.L3772
.L3748:
	ldr	w0, [x29, 156]
	cmn	w0, #1
	beq	.L3751
	mov	w0, 1
	bl	buf_alloc
	ldr	w1, [x29, 156]
	mov	x28, x0
	stp	w22, w1, [x0, 36]
	mov	w1, 1
	bl	sblk_read_page
	ldr	x3, [x28, 24]
	ldr	w0, [x3, 4]
	ldr	w25, [x3, 12]
	cmp	w22, w0
	add	w25, w25, 1
	bne	.L3752
	ldr	w0, [x28, 52]
	cmn	w0, #1
	bne	.L3753
.L3752:
	adrp	x0, .LANCHOR31
	mov	w6, 1
	ldr	w1, [x28, 40]
	ldrb	w2, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w2
	lsl	w6, w6, w2
	ldr	x2, [x29, 136]
	sub	w6, w6, #1
	lsl	w7, w6, w0
	ldrb	w4, [x2, #:lo12:.LANCHOR68]
	lsr	w0, w1, w0
	ldr	x2, [x28, 8]
	bic	w1, w1, w7
	and	w0, w0, w6
	bl	flash_read_page_en
	str	w0, [x28, 52]
.L3753:
	ldr	x0, [x28, 24]
	ldr	w0, [x0, 4]
	cmp	w22, w0
	bne	.L3754
	ldr	w0, [x28, 52]
	cmn	w0, #1
	bne	.L3755
.L3754:
	ldr	x1, [x27, #:lo12:.LANCHOR12]
	mov	w3, w22
	ldr	w4, [x28, 52]
	ldr	w2, [x29, 156]
	ldr	w0, [x1, 552]
	add	w0, w0, 1
	str	w0, [x1, 552]
	adrp	x0, .LC229
	add	x0, x0, :lo12:.LC229
	ldrb	w1, [x28, 1]
	bl	printf
	ldr	x1, [x28, 24]
	mov	w3, 4
	adrp	x0, .LC188
	mov	w2, w3
	add	x0, x0, :lo12:.LC188
	bl	rknand_print_hex
.L3755:
	ldr	x0, [x28, 24]
	ldr	w0, [x0, 4]
	cmp	w22, w0
	bne	.L3756
	ldr	w0, [x28, 52]
	cmn	w0, #1
	bne	.L3757
.L3756:
	adrp	x1, .LANCHOR235
	adrp	x0, .LC0
	mov	w2, 694
	add	x1, x1, :lo12:.LANCHOR235
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3757:
	cbz	w21, .L3758
	ldr	w0, [x29, 156]
	lsl	w2, w21, 9
	cmn	w0, #1
	beq	.L3759
	ldr	x1, [x28, 8]
	mov	x0, x26
	bl	ftl_memcpy
.L3760:
	ldr	x19, [x27, #:lo12:.LANCHOR12]
	add	x19, x19, 48
.L3758:
	ldr	x0, [x29, 136]
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	cmp	w20, w2
	bcc	.L3761
	bls	.L3762
	ldr	x19, [x27, #:lo12:.LANCHOR12]
	add	x19, x19, 16
.L3762:
	cbz	x28, .L3747
	ldrb	w0, [x28, 2]
	mov	x1, x28
	and	w0, w0, -9
	strb	w0, [x28, 2]
	adrp	x0, .LANCHOR62
	add	x0, x0, :lo12:.LANCHOR62
	bl	buf_remove_buf
	mov	x0, x28
	bl	zbuf_free
.L3747:
	ldrh	w0, [x19, 6]
	cbnz	w0, .L3764
	bl	ftl_flush
	mov	x0, x19
	bl	ftl_alloc_new_data_sblk
.L3764:
	mov	x0, x19
	bl	ftl_get_new_free_page
	mov	w10, w0
	ldr	x0, [x29, 120]
	mov	x1, x23
	adrp	x20, .LANCHOR184
	lsl	x8, x0, 6
	add	x7, x24, x8
	ldr	w0, [x7, 32]
	stp	w0, w22, [x23]
	str	w25, [x23, 12]
	ldr	w0, [x29, 156]
	str	w0, [x23, 8]
	ldr	x0, [x29, 136]
	str	wzr, [x1, 16]!
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	mov	w0, 2
	sub	w2, w2, #2
	lsl	w2, w2, 7
	add	x2, x26, x2, sxtw 2
	bl	ftl_debug_info_fill
	ldr	w0, [x29, 156]
	mov	w1, 10
	stp	w10, w0, [x7, 40]
	mov	w0, -1
	strb	w0, [x24, x8]
	ldrb	w0, [x7, 2]
	orr	w0, w0, w1
	ldrh	w1, [x19, 12]
	strb	w0, [x7, 2]
	ldrh	w0, [x19, 10]
	add	w0, w0, w1
	ldr	x1, [x29, 128]
	sub	w0, w0, #1
	strh	w0, [x7, 48]
	add	x0, x20, :lo12:.LANCHOR184
	bl	buf_add_tail
	ldr	x0, [x29, 112]
	ldrb	w2, [x0, #:lo12:.LANCHOR183]
	add	w2, w2, 1
	and	w2, w2, 255
	strb	w2, [x0, #:lo12:.LANCHOR183]
	adrp	x0, .LANCHOR236
	cmp	w2, 2
	str	wzr, [x0, #:lo12:.LANCHOR236]
	ldrh	w0, [x19, 6]
	bhi	.L3765
	cmp	w0, 1
	bne	.L3735
.L3765:
	ldrb	w1, [x19, 5]
	cmp	w1, 0
	mov	w1, 0
	cset	w4, ne
	cmp	w0, 1
	ldrb	w0, [x20, #:lo12:.LANCHOR184]
	csinc	w4, w2, w4, eq
	mov	w3, w0
.L3769:
	cmp	w1, w4
	bne	.L3770
	strb	w3, [x20, #:lo12:.LANCHOR184]
	and	w1, w1, 255
	ldr	x3, [x29, 112]
	sub	w2, w2, w1
	ubfiz	x0, x0, 6, 8
	add	x0, x24, x0
	strb	w2, [x3, #:lo12:.LANCHOR183]
	bl	sblk_prog_page
	ldrh	w0, [x19, 6]
	cmp	w0, 1
	bne	.L3735
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	mov	x0, x19
	bl	ftl_write_last_log_page
	mov	x0, x19
	bl	ftl_alloc_new_data_sblk
.L3735:
	adrp	x0, .LANCHOR66
	ldrb	w0, [x0, #:lo12:.LANCHOR66]
	cbnz	w0, .L3732
.L3734:
	bl	ftl_write_completed
	mov	w0, 0
	b	.L3731
.L3761:
	ldr	w0, [x29, 156]
	sub	w2, w2, w20
	lsl	w2, w2, 9
	cmn	w0, #1
	ubfiz	x0, x20, 7, 9
	beq	.L3763
	ldr	x1, [x28, 8]
	lsl	x0, x0, 2
	add	x1, x1, x0
	add	x0, x26, x0
	bl	ftl_memcpy
	b	.L3762
.L3763:
	mov	w1, 0
	add	x0, x26, x0, lsl 2
	bl	ftl_memset
	b	.L3762
.L3770:
	ubfiz	x3, x3, 6, 8
	add	w1, w1, 1
	ldrb	w3, [x24, x3]
	b	.L3769
.L3771:
	lsl	w2, w21, 9
	mov	x28, 0
	mov	w25, 0
.L3759:
	mov	w1, 0
	mov	x0, x26
	bl	ftl_memset
	b	.L3760
.L3751:
	cbnz	w21, .L3771
	mov	w25, 0
	mov	x28, 0
	b	.L3758
	.size	ftl_write_commit, .-ftl_write_commit
	.section	.text.zftl_write,"ax",@progbits
	.align	2
	.global	zftl_write
	.type	zftl_write, %function
zftl_write:
	stp	x29, x30, [sp, -112]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w0
	adrp	x0, .LANCHOR19
	stp	x21, x22, [sp, 32]
	stp	x25, x26, [sp, 64]
	mov	w20, w1
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	mov	w21, w2
	stp	x23, x24, [sp, 48]
	mov	x25, x3
	stp	x27, x28, [sp, 80]
	tbz	x0, 12, .L3798
	ldr	w4, [x25]
	mov	w3, w2
	adrp	x0, .LC230
	mov	w2, w1
	add	x0, x0, :lo12:.LC230
	mov	w1, w19
	bl	printf
.L3798:
	cbnz	w19, .L3799
	adrp	x0, .LANCHOR73
	mov	w19, 24576
	ldr	w0, [x0, #:lo12:.LANCHOR73]
.L3800:
	cmp	w0, w20
	ccmp	w0, w21, 0, hi
	bcc	.L3814
	add	w1, w20, w21
	cmp	w0, w1
	bcc	.L3814
	adrp	x26, .LANCHOR68
	add	w19, w19, w20
	sub	w22, w21, #1
	adrp	x27, .LANCHOR66
	ldrb	w0, [x26, #:lo12:.LANCHOR68]
	add	w22, w22, w19
	adrp	x28, .LANCHOR57
	add	x27, x27, :lo12:.LANCHOR66
	add	x28, x28, :lo12:.LANCHOR57
	udiv	w24, w19, w0
	udiv	w22, w22, w0
	add	x0, x26, :lo12:.LANCHOR68
	str	x0, [x29, 104]
	mov	w20, w24
	sub	w23, w22, w24
	add	w23, w23, 1
.L3802:
	cbnz	w23, .L3811
	bl	ftl_write_commit
	bl	ftl_flush
	mov	w0, 0
.L3797:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 112
	ret
.L3799:
	cmp	w19, 3
	bhi	.L3814
	lsl	w19, w19, 13
	mov	w0, 8192
	b	.L3800
.L3811:
	ldrb	w0, [x27]
	cbz	w0, .L3803
	ldrb	w0, [x28]
	cmp	w0, 2
	bhi	.L3803
	bl	ftl_write_commit
.L3803:
	mov	w0, 0
	bl	buf_alloc
	mov	x26, x0
	cbnz	x0, .L3804
	bl	ftl_write_commit
	b	.L3802
.L3804:
	strb	wzr, [x0, 57]
	cmp	w20, w24
	ldr	x0, [x29, 104]
	ccmp	w20, w22, 4, ne
	ldrb	w0, [x0]
	strb	w0, [x26, 56]
	bne	.L3807
	cmp	w20, w24
	bne	.L3808
	udiv	w1, w19, w0
	msub	w1, w1, w0, w19
	and	w1, w1, 255
	strb	w1, [x26, 57]
	sub	w0, w0, w1
	and	w0, w0, 255
	cmp	w21, w0
	csel	w0, w21, w0, cc
.L3822:
	strb	w0, [x26, 56]
.L3807:
	ldr	x4, [x26, 8]
	mov	x1, x25
	ldrb	w0, [x26, 57]
	sub	w23, w23, #1
	ldrb	w2, [x26, 56]
	ubfiz	x0, x0, 9, 8
	lsl	w2, w2, 9
	add	x0, x4, x0
	bl	ftl_memcpy
	adrp	x0, .LANCHOR69
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 8]
	str	w20, [x26, 36]
	add	w20, w20, 1
	add	w2, w0, 1
	str	w2, [x1, 8]
	str	w0, [x26, 32]
	mov	x0, x26
	bl	ftl_write_buf
	ldrb	w0, [x26, 56]
	ubfiz	x0, x0, 9, 8
	add	x25, x25, x0
	b	.L3802
.L3808:
	add	w1, w19, w21
	msub	w0, w0, w20, w1
	b	.L3822
.L3814:
	mov	w0, -1
	b	.L3797
	.size	zftl_write, .-zftl_write
	.section	.text.zftl_sys_write,"ax",@progbits
	.align	2
	.global	zftl_sys_write
	.type	zftl_sys_write, %function
zftl_sys_write:
	mov	x3, x2
	mov	w2, w1
	mov	w1, w0
	mov	w0, 2
	b	zftl_write
	.size	zftl_sys_write, .-zftl_sys_write
	.section	.text.StorageSysDataStore,"ax",@progbits
	.align	2
	.global	StorageSysDataStore
	.type	StorageSysDataStore, %function
StorageSysDataStore:
	mov	x3, x1
	mov	w2, 1
	mov	w1, w0
	mov	w0, 2
	b	zftl_write
	.size	StorageSysDataStore, .-StorageSysDataStore
	.section	.text.FlashBootVendorWrite,"ax",@progbits
	.align	2
	.global	FlashBootVendorWrite
	.type	FlashBootVendorWrite, %function
FlashBootVendorWrite:
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	mov	w0, 2
	b	zftl_write
	.size	FlashBootVendorWrite, .-FlashBootVendorWrite
	.section	.text.ftl_write,"ax",@progbits
	.align	2
	.global	ftl_write
	.type	ftl_write, %function
ftl_write:
	stp	x29, x30, [sp, -48]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w2
	stp	x21, x22, [sp, 32]
	mov	x20, x3
	mov	w22, w1
	ands	w21, w0, 255
	bne	.L3827
	mov	w3, w2
	mov	w0, 0
	mov	x2, x20
	bl	idb_write_data
.L3827:
	mov	x3, x20
	mov	w2, w19
	mov	w1, w22
	mov	w0, w21
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	b	zftl_write
	.size	ftl_write, .-ftl_write
	.section	.text.ftl_vendor_write,"ax",@progbits
	.align	2
	.global	ftl_vendor_write
	.type	ftl_vendor_write, %function
ftl_vendor_write:
	mov	x3, x2
	mov	w2, w1
	add	w1, w0, 512
	mov	w0, 2
	b	zftl_write
	.size	ftl_vendor_write, .-ftl_vendor_write
	.section	.text.zftl_vendor_write,"ax",@progbits
	.align	2
	.global	zftl_vendor_write
	.type	zftl_vendor_write, %function
zftl_vendor_write:
	b	ftl_vendor_write
	.size	zftl_vendor_write, .-zftl_vendor_write
	.section	.text.gc_do_copy_back,"ax",@progbits
	.align	2
	.global	gc_do_copy_back
	.type	gc_do_copy_back, %function
gc_do_copy_back:
	stp	x29, x30, [sp, -224]!
	adrp	x0, .LANCHOR90
	add	x29, sp, 0
	ldrb	w0, [x0, #:lo12:.LANCHOR90]
	stp	x19, x20, [sp, 16]
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	cbnz	w0, .L3832
	bl	buf_alloc
	mov	x19, x0
	cbz	x0, .L3831
	adrp	x21, .LANCHOR76
	add	x3, x21, :lo12:.LANCHOR76
	ldrh	w2, [x3, 26]
	mov	w0, w2
	bl	gc_get_src_ppa_from_index
	add	w2, w2, 1
	mov	w22, w0
	str	w22, [x19, 40]
	strh	w2, [x3, 26]
	mov	w1, 1
	mov	x0, x19
	bl	sblk_read_page
	ldr	w0, [x19, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3834
	adrp	x1, .LANCHOR237
	adrp	x0, .LC0
	mov	w2, 1032
	add	x1, x1, :lo12:.LANCHOR237
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3834:
	ldr	x0, [x19, 24]
	ldr	w20, [x0, 4]
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 176]
	cmn	w0, #1
	bne	.L3835
	mov	w2, 0
	add	x1, x29, 176
	mov	w0, w20
	bl	pm_log2phys
.L3835:
	ldr	w23, [x29, 176]
	cmp	w22, w23
	bne	.L3836
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
	add	x1, x0, 2
	add	x0, x0, 1026
.L3839:
	ldr	w2, [x1, 34]
	cmp	w20, w2
	bne	.L3837
	ldrb	w2, [x1]
	tbz	x2, 1, .L3837
	mov	x0, x19
	bl	zbuf_free
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3831
	add	x21, x21, :lo12:.LANCHOR76
	adrp	x0, .LC231
	mov	w2, w22
	mov	w1, w20
	add	x0, x0, :lo12:.LC231
	ldrh	w3, [x21, 26]
	bl	printf
.L3831:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 224
	ret
.L3837:
	add	x1, x1, 64
	cmp	x1, x0
	bne	.L3839
	adrp	x0, .LANCHOR68
	strb	wzr, [x19, 57]
	str	w20, [x19, 36]
	ldrb	w0, [x0, #:lo12:.LANCHOR68]
	strb	w0, [x19, 56]
	ldr	x0, [x19, 24]
	ldr	w1, [x0]
	str	w1, [x19, 32]
	str	wzr, [x0, 16]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3840
	mov	w0, w20
	bl	lpa_hash_get_ppa
	add	x1, x21, :lo12:.LANCHOR76
	mov	w3, w0
	mov	w4, w22
	adrp	x0, .LC232
	mov	w2, w23
	add	x0, x0, :lo12:.LC232
	ldrh	w5, [x1, 26]
	mov	w1, w20
	bl	printf
.L3840:
	mov	x0, x19
	bl	ftl_gc_write_buf
	bl	ftl_write_commit
	add	x21, x21, :lo12:.LANCHOR76
	adrp	x0, .LANCHOR69
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 60]
	add	w0, w0, 1
	str	w0, [x1, 60]
	ldrh	w0, [x21, 28]
	add	w0, w0, 1
	strh	w0, [x21, 28]
	b	.L3831
.L3836:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3841
	add	x21, x21, :lo12:.LANCHOR76
	mov	w0, w20
	bl	lpa_hash_get_ppa
	mov	w3, w0
	mov	w4, w22
	adrp	x0, .LC232
	ldrh	w5, [x21, 26]
	mov	w2, w23
	mov	w1, w20
	add	x0, x0, :lo12:.LC232
	bl	printf
.L3841:
	mov	x0, x19
	bl	zbuf_free
	b	.L3831
.L3832:
	adrp	x2, .LANCHOR12
	adrp	x1, .LANCHOR85
	stp	x1, x2, [x29, 136]
	ldr	x26, [x2, #:lo12:.LANCHOR12]
	ldrb	w3, [x1, #:lo12:.LANCHOR85]
	add	x26, x26, 80
	ldrb	w0, [x26, 9]
	and	w20, w0, 65535
	cmp	w3, w20
	bhi	.L3896
	cmp	w20, 2
	mov	w21, 2
	csel	w21, w20, w21, ls
	and	w21, w21, 65535
.L3842:
	adrp	x1, .LANCHOR84
	str	x1, [x29, 120]
	ldrb	w19, [x1, #:lo12:.LANCHOR84]
	cmp	w19, 3
	bne	.L3843
	adrp	x1, .LANCHOR35
	ldrb	w1, [x1, #:lo12:.LANCHOR35]
	cbz	w1, .L3844
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	ldrh	w22, [x1, 2106]
	adrp	x1, .LANCHOR130
	ldrb	w1, [x1, #:lo12:.LANCHOR130]
	sdiv	w2, w22, w0
	and	w25, w2, 65535
	cbz	w1, .L3845
	adrp	x1, .LANCHOR238
	add	x1, x1, :lo12:.LANCHOR238
	ldrh	w1, [x1, w2, sxtw 1]
	cmp	w1, 0
	cset	w19, ne
.L3963:
	add	w19, w19, 1
.L3846:
	msub	w20, w20, w25, w22
	and	w20, w20, 65535
.L3847:
	adrp	x1, .LANCHOR91
	mul	w11, w19, w21
	adrp	x10, .LANCHOR238
	sxtw	x13, w25
	ldrh	w5, [x1, #:lo12:.LANCHOR91]
	adrp	x1, .LANCHOR224
	add	x10, x10, :lo12:.LANCHOR238
	mov	w2, 0
	mul	w0, w5, w0
	ldrb	w5, [x1, #:lo12:.LANCHOR224]
	sub	w5, w0, w5
	adrp	x0, .LANCHOR130
	ldrb	w12, [x0, #:lo12:.LANCHOR130]
	adrp	x0, .LANCHOR161
	ldr	x8, [x0, #:lo12:.LANCHOR161]
	adrp	x0, .LANCHOR76
	add	x6, x0, :lo12:.LANCHOR76
	ldrh	w14, [x6, 24]
.L3851:
	cmp	w2, w11
	bge	.L3904
	add	w4, w22, w2
	cmp	w4, w5
	blt	.L3852
	cbz	w12, .L3904
	ldrh	w0, [x10, x13, lsl 1]
	cmp	w0, w25
	bcc	.L3853
.L3904:
	mov	w23, 1
	b	.L3849
.L3896:
	mov	w21, 1
	b	.L3842
.L3845:
	adrp	x1, .LANCHOR216
	ldrb	w1, [x1, #:lo12:.LANCHOR216]
	cbz	w1, .L3898
	sub	w1, w25, #62
	and	w1, w1, 65535
	cmp	w1, 2159
	bhi	.L3899
	udiv	w19, w25, w19
	add	w19, w19, w19, lsl 1
	sub	w19, w25, w19
	and	w19, w19, 65535
	cmp	w19, 0
	cset	w19, eq
	b	.L3963
.L3898:
	mov	w19, 1
	b	.L3846
.L3899:
	mov	w19, 2
	b	.L3846
.L3844:
	adrp	x1, .LANCHOR89
	ldrb	w1, [x1, #:lo12:.LANCHOR89]
	cbz	w1, .L3848
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	add	w20, w0, w0, lsl 1
	ldrh	w22, [x1, 2106]
	adrp	x1, .LANCHOR36
	ldrb	w1, [x1, #:lo12:.LANCHOR36]
	sdiv	w20, w22, w20
	and	w25, w20, 65535
	mul	w20, w0, w20
	sub	w20, w20, w20, lsl 2
	add	w20, w20, w22
	sdiv	w20, w20, w19
	and	w20, w20, 65535
	cbz	w1, .L3847
	add	w3, w25, w25, lsl 1
	and	w25, w3, 65535
	b	.L3847
.L3848:
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	adrp	x2, .LANCHOR239
	add	x2, x2, :lo12:.LANCHOR239
	ldrh	w4, [x1, 2106]
	sdiv	w1, w4, w0
	ldrh	w23, [x2, w1, sxtw 1]
	msub	w20, w20, w1, w4
	and	w20, w20, 65535
	lsr	w25, w23, 3
	and	w23, w23, 7
	cmp	w23, 1
	madd	w22, w25, w0, w20
	add	w22, w22, w22, lsl 1
	and	w22, w22, 65535
	beq	.L3847
.L3849:
	mul	w0, w19, w21
	stp	wzr, w0, [x29, 152]
	ubfiz	w0, w21, 1, 15
	str	w0, [x29, 132]
	msub	w0, w0, w19, w22
	and	w0, w0, 65535
	str	w0, [x29, 128]
	ldrh	w0, [x29, 128]
	str	x0, [x29, 112]
	adrp	x0, .LANCHOR55
	add	x0, x0, :lo12:.LANCHOR55
	str	x0, [x29, 104]
.L3854:
	ldp	w0, w1, [x29, 152]
	ldrh	w24, [x29, 152]
	and	w0, w0, 65535
	str	w0, [x29, 168]
	cmp	w0, w1
	blt	.L3878
	ldr	x0, [x29, 120]
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	cmp	w0, 3
	add	x0, x29, 176
	bne	.L3879
	adrp	x1, .LANCHOR35
	ldrb	w1, [x1, #:lo12:.LANCHOR35]
	cbz	w1, .L3880
	ldr	w2, [x29, 156]
	mov	w1, 0
	sub	w2, w2, #1
.L3881:
	cmp	w1, w2
	blt	.L3882
.L3967:
	ldr	x0, [x0, w2, sxtw 3]
	mov	w1, -1
	strb	w1, [x0]
	mul	w1, w21, w19
	ldr	x0, [x29, 176]
	bl	sblk_prog_page
	b	.L3883
.L3843:
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbnz	w1, .L3850
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	mov	w19, 1
	ldrh	w22, [x1, 2106]
	sdiv	w25, w22, w0
	msub	w20, w20, w25, w22
	and	w20, w20, 65535
	b	.L3847
.L3850:
	adrp	x1, .LANCHOR76
	add	x1, x1, :lo12:.LANCHOR76
	mov	w19, 2
	ldrh	w22, [x1, 2106]
	sdiv	w25, w22, w0
	msub	w20, w20, w25, w22
	and	w20, w20, 65535
	b	.L3847
.L3853:
	tbz	x2, 0, .L3904
.L3852:
	sbfiz	x4, x4, 2, 32
	ldr	w0, [x8, x4]
	cmn	w0, #1
	bne	.L3855
	ldrh	w7, [x6, 26]
	cmp	w7, w14
	bcs	.L3831
	cbz	w12, .L3856
	ldrh	w0, [x10, x13, lsl 1]
	cmp	w0, w25
	bcs	.L3856
	tbz	x2, 0, .L3856
	ubfiz	x0, x0, 2, 16
	ldr	w0, [x8, x0]
.L3964:
	str	w0, [x8, x4]
.L3855:
	add	w2, w2, 1
	and	w2, w2, 65535
	b	.L3851
.L3856:
	mov	w0, w7
	bl	gc_get_src_ppa_from_index
	add	w7, w7, 1
	strh	w7, [x6, 26]
	b	.L3964
.L3878:
	ldr	w0, [x29, 168]
	add	w0, w22, w0
	str	w0, [x29, 172]
	sxtw	x0, w0
	str	x0, [x29, 160]
	adrp	x0, .LANCHOR88
	ldr	x1, [x29, 160]
	ldr	x0, [x0, #:lo12:.LANCHOR88]
	ldrb	w0, [x0, x1]
	cmp	w0, 255
	bne	.L3858
	mov	w0, 0
	bl	buf_alloc
	mov	x27, x0
	cbnz	x0, .L3859
	bl	sblk_wait_write_queue_completed
	bl	ftl_write_completed
	bl	gc_write_completed
	bl	gc_free_temp_buf
	mov	w0, 0
	bl	buf_alloc
	mov	x27, x0
	cbz	x0, .L3831
.L3859:
	adrp	x0, .LANCHOR88
	ldr	x2, [x29, 160]
	ldrb	w1, [x27, 1]
	ldr	x0, [x0, #:lo12:.LANCHOR88]
	strb	w1, [x0, x2]
	adrp	x0, .LANCHOR76
	add	x1, x0, :lo12:.LANCHOR76
	strb	w23, [x27, 61]
	ldrb	w0, [x1, 7]
	add	w0, w0, 1
	strb	w0, [x1, 7]
	add	w0, w24, w22
	strh	w0, [x27, 48]
	adrp	x0, .LANCHOR91
	ldr	w1, [x29, 172]
	ldrh	w6, [x0, #:lo12:.LANCHOR91]
	adrp	x0, .LANCHOR224
	ldrb	w5, [x0, #:lo12:.LANCHOR224]
	ldrb	w0, [x26, 9]
	mul	w0, w0, w6
	sub	w0, w0, w5
	cmp	w1, w0
	blt	.L3860
	adrp	x1, .LANCHOR130
	ldrb	w1, [x1, #:lo12:.LANCHOR130]
	cbz	w1, .L3861
	adrp	x1, .LANCHOR238
	add	x1, x1, :lo12:.LANCHOR238
	ldrh	w1, [x1, w25, sxtw 1]
	cmp	w1, w25
	bcs	.L3861
	tbnz	x24, 0, .L3860
.L3861:
	adrp	x1, .LANCHOR160
	ldr	w3, [x29, 172]
	mov	w2, -1
	cmp	w5, 2
	ldr	x1, [x1, #:lo12:.LANCHOR160]
	str	w2, [x1, w3, sxtw 2]
	bne	.L3862
	cmp	w3, w0
	adrp	x28, .LANCHOR221
	bne	.L3863
	ldrh	w2, [x28, #:lo12:.LANCHOR221]
	ldr	x0, [x27, 8]
	bl	ftl_memcpy
	adrp	x0, .LANCHOR68
	mov	w1, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	ldr	x0, [x27, 24]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x6, [x27, 24]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	ldrh	w1, [x28, #:lo12:.LANCHOR221]
	str	w0, [x6]
	ldr	x0, [x27, 8]
	bl	js_hash
	str	w0, [x6, 4]
	ldr	x0, [x29, 144]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldr	w0, [x0, 132]
	stp	w0, wzr, [x6, 8]
.L3864:
	ldr	x0, [x27, 24]
	str	wzr, [x0, 16]
.L3858:
	adrp	x0, .LANCHOR88
	ldrsw	x2, [x29, 168]
	add	x4, x29, 176
	ldr	x1, [x0, #:lo12:.LANCHOR88]
	ldr	x0, [x29, 160]
	ldrb	w5, [x1, x0]
	adrp	x0, .LANCHOR55
	add	x6, x0, :lo12:.LANCHOR55
	mov	x7, x5
	ubfiz	x0, x5, 6, 8
	add	x0, x6, x0
	add	x6, x6, x5, lsl 6
	str	x0, [x4, x2, lsl 3]
	mov	w0, 2
	strh	w0, [x6, 50]
	ldr	x0, [x29, 120]
	strb	w23, [x6, 61]
	ldrb	w0, [x0, #:lo12:.LANCHOR84]
	cmp	w0, 3
	bne	.L3869
	adrp	x8, .LANCHOR35
	ldrb	w8, [x8, #:lo12:.LANCHOR35]
	cbz	w8, .L3870
	adrp	x0, .LANCHOR130
	and	w8, w24, 1
	add	w10, w8, w25
	ldrb	w0, [x0, #:lo12:.LANCHOR130]
	cbz	w0, .L3871
	adrp	x6, .LANCHOR238
	add	x6, x6, :lo12:.LANCHOR238
	ldrh	w6, [x6, w25, sxtw 1]
	cmp	w6, w25
	bcs	.L3871
	cmp	w8, 0
	csel	w10, w10, w6, eq
.L3871:
	adrp	x0, .LANCHOR55
	add	x6, x0, :lo12:.LANCHOR55
	add	x5, x6, x5, lsl 6
	udiv	w6, w24, w19
	add	w6, w6, w20
	add	x6, x26, x6, sxtw 1
	ldrh	w0, [x6, 16]
	adrp	x6, .LANCHOR117
	ldrh	w6, [x6, #:lo12:.LANCHOR117]
	madd	w0, w0, w6, w10
	orr	w0, w0, 50331648
	str	w0, [x5, 40]
.L3876:
	adrp	x0, .LANCHOR55
	sbfiz	x7, x7, 6, 32
	add	x0, x0, :lo12:.LANCHOR55
	add	x0, x0, x7
	ldrh	w5, [x0, 48]
	ldr	w6, [x0, 40]
	adrp	x0, .LANCHOR162
	ldr	x0, [x0, #:lo12:.LANCHOR162]
	str	w6, [x0, x5, lsl 2]
	b	.L3895
.L3863:
	ldr	x2, [x29, 136]
	ldrh	w0, [x28, #:lo12:.LANCHOR221]
	ldrb	w28, [x2, #:lo12:.LANCHOR85]
	mul	w28, w28, w6
	lsl	w28, w28, 2
	sub	w28, w28, w0
	and	x0, x0, 65532
	add	x1, x1, x0
	ldr	x0, [x27, 8]
	mov	w2, w28
	bl	ftl_memcpy
	adrp	x0, .LANCHOR68
	mov	w1, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	ldr	x0, [x27, 24]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x6, [x27, 24]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	mov	w1, w28
	str	w0, [x6]
	ldr	x0, [x27, 8]
	bl	js_hash
	str	w0, [x6, 4]
	ldr	x0, [x29, 144]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldr	w0, [x0, 132]
	str	w0, [x6, 8]
	mov	w0, 1
	str	w0, [x6, 12]
	b	.L3864
.L3862:
	ldr	x0, [x29, 136]
	ldrb	w2, [x0, #:lo12:.LANCHOR85]
	ldr	x0, [x27, 8]
	mul	w2, w2, w6
	lsl	w2, w2, 2
	bl	ftl_memcpy
	ldr	x1, [x29, 136]
	adrp	x0, .LANCHOR91
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	ldrb	w1, [x1, #:lo12:.LANCHOR85]
	mul	w0, w0, w1
	adrp	x1, .LANCHOR68
	ldrb	w1, [x1, #:lo12:.LANCHOR68]
	lsl	w2, w0, 2
	cmp	w1, w0, lsr 6
	bge	.L3865
	adrp	x1, .LANCHOR221
	ldrh	w1, [x1, #:lo12:.LANCHOR221]
	sub	w2, w1, w2
.L3865:
	adrp	x1, .LANCHOR161
	ldr	x5, [x27, 8]
	ldr	x1, [x1, #:lo12:.LANCHOR161]
	add	x0, x5, x0, sxtw 2
	bl	ftl_memcpy
	adrp	x0, .LANCHOR68
	mov	w1, 0
	ldrb	w2, [x0, #:lo12:.LANCHOR68]
	ldr	x0, [x27, 24]
	lsl	w2, w2, 1
	bl	ftl_memset
	ldr	x6, [x27, 24]
	mov	w0, 15555
	movk	w0, 0xf55f, lsl 16
	str	w0, [x6]
	adrp	x0, .LANCHOR91
	ldrh	w1, [x0, #:lo12:.LANCHOR91]
	ldr	x0, [x29, 136]
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	mul	w1, w1, w0
	ldr	x0, [x27, 8]
	lsl	w1, w1, 2
	bl	js_hash
	str	w0, [x6, 4]
	ldr	x0, [x29, 144]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	ldr	w0, [x0, 132]
	str	w0, [x6, 8]
	b	.L3864
.L3860:
	ldr	x0, [x29, 160]
	mov	w1, 1
	lsl	x28, x0, 2
	adrp	x0, .LANCHOR161
	ldr	x0, [x0, #:lo12:.LANCHOR161]
	ldr	w0, [x0, x28]
	str	w0, [x27, 40]
	mov	x0, x27
	bl	sblk_read_page
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3867
	adrp	x0, .LANCHOR80
	ldrh	w2, [x0, #:lo12:.LANCHOR80]
	adrp	x0, .LANCHOR31
	ldrb	w1, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w1
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x27, 40]
	sub	w0, w0, #1
	lsr	w1, w1, w2
	and	w0, w0, w1
	adrp	x1, .LANCHOR81
	ldrb	w2, [x1, #:lo12:.LANCHOR81]
	mov	x1, 0
	udiv	w0, w0, w2
	bl	ftl_sblk_dump
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmn	w0, #1, 4, ne
	bne	.L3867
	ldr	x0, [x27, 24]
	mov	w1, -1
	str	w1, [x0, 4]
	ldr	w0, [x27, 52]
	cmp	w0, 512
	ccmp	w0, w1, 4, ne
	bne	.L3867
	adrp	x1, .LANCHOR237
	adrp	x0, .LC0
	mov	w2, 1223
	add	x1, x1, :lo12:.LANCHOR237
	add	x0, x0, :lo12:.LC0
	bl	printf
.L3867:
	ldr	x0, [x27, 24]
	adrp	x1, .LANCHOR219
	ldr	w1, [x1, #:lo12:.LANCHOR219]
	ldr	w2, [x0, 4]
	cmp	w2, w1
	bcc	.L3868
	mov	w1, -1
	str	w1, [x0, 4]
.L3868:
	adrp	x1, .LANCHOR160
	ldr	w2, [x0, 4]
	ldr	x1, [x1, #:lo12:.LANCHOR160]
	str	w2, [x1, x28]
	ldr	w1, [x27, 40]
	str	w1, [x0, 8]
	b	.L3864
.L3870:
	udiv	w0, w24, w0
	adrp	x7, .LANCHOR36
	ldrb	w7, [x7, #:lo12:.LANCHOR36]
	cbz	w7, .L3873
	add	w7, w0, w20
	adrp	x8, .LANCHOR117
	add	x7, x26, x7, sxtw 1
	add	w0, w0, w0, lsl 1
	ldrh	w8, [x8, #:lo12:.LANCHOR117]
	sub	w0, w24, w0
	ldrh	w7, [x7, 16]
	madd	w7, w7, w8, w25
	add	w0, w7, w0, uxth
.L3968:
	str	w0, [x6, 40]
	ldr	x0, [x29, 104]
	add	x5, x0, x5, lsl 6
	adrp	x0, .LANCHOR162
	ldr	x6, [x0, #:lo12:.LANCHOR162]
	mov	w0, 3
	ldrh	w7, [x5, 48]
	udiv	w0, w24, w0
	ldr	w5, [x5, 40]
	add	w0, w0, w0, lsl 1
	sub	w0, w24, w0
	and	w0, w0, 65535
	add	w0, w0, 1
	orr	w0, w5, w0, lsl 24
	str	w0, [x6, x7, lsl 2]
.L3895:
	adrp	x0, .LANCHOR130
	ldrb	w0, [x0, #:lo12:.LANCHOR130]
	cbz	w0, .L3877
	adrp	x0, .LANCHOR238
	add	x0, x0, :lo12:.LANCHOR238
	ldrh	w0, [x0, w25, sxtw 1]
	cmp	w0, w25
	bcs	.L3877
	tbz	x24, 0, .L3877
	ldr	x3, [x29, 160]
	mov	w0, -1
	strb	w0, [x1, x3]
	ldrh	w1, [x29, 128]
	ldr	x0, [x4, x2, lsl 3]
	ldr	x2, [x29, 112]
	strh	w1, [x0, 48]
	ldrb	w1, [x0, 1]
	adrp	x0, .LANCHOR88
	ldr	x0, [x0, #:lo12:.LANCHOR88]
	strb	w1, [x0, x2]
	adrp	x0, .LANCHOR161
	ldr	w2, [x29, 172]
	mov	w1, -1
	ldr	x0, [x0, #:lo12:.LANCHOR161]
	str	w1, [x0, w2, sxtw 2]
.L3877:
	ldr	w0, [x29, 152]
	add	w0, w0, 1
	str	w0, [x29, 152]
	b	.L3854
.L3873:
	add	w0, w0, w20
	adrp	x7, .LANCHOR117
	add	x0, x26, x0, sxtw 1
	ldrh	w7, [x7, #:lo12:.LANCHOR117]
	ldrh	w0, [x0, 16]
	madd	w0, w0, w7, w25
	b	.L3968
.L3869:
	cmp	w0, 2
	bne	.L3876
	adrp	x0, .LANCHOR86
	adrp	x5, .LANCHOR117
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbnz	w0, .L3875
	ldr	w0, [x29, 168]
	ldrh	w5, [x5, #:lo12:.LANCHOR117]
	add	w27, w20, w0
	add	x27, x26, x27, sxtw 1
	ldrh	w0, [x27, 16]
	madd	w0, w0, w5, w25
.L3965:
	orr	w0, w0, 33554432
	str	w0, [x6, 40]
	b	.L3876
.L3875:
	add	w0, w20, w24, lsr 1
	ldrh	w5, [x5, #:lo12:.LANCHOR117]
	add	x0, x26, x0, sxtw 1
	ldrh	w0, [x0, 16]
	madd	w0, w0, w5, w25
	and	w5, w24, 1
	add	w0, w0, w5
	b	.L3965
.L3882:
	ldr	x4, [x0, w1, sxtw 3]
	add	w1, w1, 1
	ldr	x5, [x0, w1, sxtw 3]
	and	w1, w1, 65535
	ldrb	w5, [x5, 1]
	strb	w5, [x4]
	b	.L3881
.L3880:
	adrp	x1, .LANCHOR89
	ldrb	w2, [x1, #:lo12:.LANCHOR89]
	ldr	x1, [x29, 176]
	cbz	w2, .L3884
.L3887:
	strb	wzr, [x1, 60]
	b	.L3886
.L3884:
	cmp	w23, 1
	bne	.L3885
	mov	w2, 9
.L3966:
	strb	w2, [x1, 60]
.L3886:
	mov	w2, w21
	add	x1, x0, 24
	bl	sblk_xlc_prog_pages
.L3883:
	adrp	x0, .LANCHOR89
	ldrb	w0, [x0, #:lo12:.LANCHOR89]
	cbz	w0, .L3892
	add	w21, w21, w21, lsl 1
	and	w21, w21, 65535
.L3893:
	adrp	x0, .LANCHOR69
	ldr	x1, [x0, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 52]
	add	w0, w0, w21
	str	w0, [x1, 52]
	adrp	x0, .LANCHOR76
	add	x25, x0, :lo12:.LANCHOR76
	ldrh	w0, [x25, 2106]
	add	w21, w21, w0
	adrp	x0, .LANCHOR91
	and	w21, w21, 65535
	strh	w21, [x25, 2106]
	ldrh	w0, [x0, #:lo12:.LANCHOR91]
	ldrb	w1, [x26, 9]
	mul	w0, w0, w1
	cmp	w21, w0
	blt	.L3894
	ldr	x0, [x29, 144]
	ldr	x0, [x0, #:lo12:.LANCHOR12]
	strh	wzr, [x0, 86]
.L3894:
	bl	gc_write_completed
	b	.L3831
.L3885:
	cmp	w23, 2
	bne	.L3887
	mov	w2, 13
	b	.L3966
.L3879:
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbz	w1, .L3905
	adrp	x1, .LANCHOR87
	ldrb	w1, [x1, #:lo12:.LANCHOR87]
	cbnz	w1, .L3889
.L3888:
	ldr	w2, [x29, 156]
	sub	w2, w2, #1
.L3890:
	cmp	w1, w2
	bge	.L3967
	ldr	x4, [x0, w1, sxtw 3]
	add	w1, w1, 1
	ldr	x5, [x0, w1, sxtw 3]
	and	w1, w1, 65535
	ldrb	w5, [x5, 1]
	strb	w5, [x4]
	b	.L3890
.L3905:
	mov	w1, 0
	b	.L3888
.L3889:
	mov	w1, w21
	bl	sblk_3d_mlc_prog_pages
	b	.L3883
.L3892:
	adrp	x0, .LANCHOR86
	ldrb	w0, [x0, #:lo12:.LANCHOR86]
	cbnz	w0, .L3906
	adrp	x0, .LANCHOR35
	ldrb	w0, [x0, #:lo12:.LANCHOR35]
	cbz	w0, .L3893
	adrp	x0, .LANCHOR130
	ldrh	w1, [x29, 156]
	ldrb	w0, [x0, #:lo12:.LANCHOR130]
	cbz	w0, .L3907
	adrp	x0, .LANCHOR238
	add	x0, x0, :lo12:.LANCHOR238
	ldrh	w0, [x0, w25, sxtw 1]
	cmp	w0, w25
	csel	w21, w21, w1, cc
	b	.L3893
.L3906:
	ldr	w21, [x29, 132]
	b	.L3893
.L3907:
	mov	w21, w1
	b	.L3893
	.size	gc_do_copy_back, .-gc_do_copy_back
	.section	.text.zftl_do_gc,"ax",@progbits
	.align	2
	.global	zftl_do_gc
	.type	zftl_do_gc, %function
zftl_do_gc:
	sub	sp, sp, #144
	adrp	x1, .LANCHOR113
	stp	x29, x30, [sp, 16]
	add	x29, sp, 16
	ldrh	w1, [x1, #:lo12:.LANCHOR113]
	stp	x21, x22, [sp, 48]
	adrp	x22, .LANCHOR109
	stp	x19, x20, [sp, 32]
	adrp	x20, .LANCHOR157
	stp	x23, x24, [sp, 64]
	adrp	x23, .LANCHOR12
	stp	x25, x26, [sp, 80]
	ldrh	w21, [x22, #:lo12:.LANCHOR109]
	ldrb	w2, [x20, #:lo12:.LANCHOR157]
	stp	x27, x28, [sp, 96]
	add	w21, w1, w21
	ldr	x26, [x23, #:lo12:.LANCHOR12]
	cmp	w2, 6
	bhi	.L4086
	mov	w25, w0
	and	w21, w21, 65535
	adrp	x0, .L3972
	add	x0, x0, :lo12:.L3972
	ldrh	w0, [x0,w2,uxtw #1]
	adr	x2, .Lrtx3972
	add	x0, x2, w0, sxth #2
	br	x0
.Lrtx3972:
	.section	.rodata.zftl_do_gc,"a",@progbits
	.align	0
	.align	2
.L3972:
	.2byte	(.L3971 - .Lrtx3972) / 4
	.2byte	(.L3973 - .Lrtx3972) / 4
	.2byte	(.L3974 - .Lrtx3972) / 4
	.2byte	(.L3975 - .Lrtx3972) / 4
	.2byte	(.L3976 - .Lrtx3972) / 4
	.2byte	(.L3977 - .Lrtx3972) / 4
	.2byte	(.L3978 - .Lrtx3972) / 4
	.section	.text.zftl_do_gc
.L3977:
	adrp	x19, .LANCHOR76
	add	x24, x19, :lo12:.LANCHOR76
	mov	w22, 0
.L3979:
	bl	gc_check_data_one_wl
	cbz	w0, .L4082
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	add	x19, x19, :lo12:.LANCHOR76
	strh	wzr, [x19, 56]
	ldrh	w0, [x0, 80]
	bl	ftl_free_sblk
	adrp	x2, .LANCHOR69
	ldr	x1, [x23, #:lo12:.LANCHOR12]
	mov	w0, -1
	ldr	x2, [x2, #:lo12:.LANCHOR69]
	strh	w0, [x1, 80]
	strh	w0, [x2, 126]
	strh	w0, [x1, 130]
	ldr	x0, [x19, 8]
	bl	zbuf_free
	strb	wzr, [x20, #:lo12:.LANCHOR157]
	str	xzr, [x19, 8]
	b	.L4172
.L3971:
	adrp	x0, .LANCHOR111
	adrp	x27, .LANCHOR103
	ldrh	w3, [x26, 80]
	ldrh	w22, [x0, #:lo12:.LANCHOR111]
	adrp	x0, .LANCHOR105
	ldrh	w24, [x27, #:lo12:.LANCHOR103]
	ldrh	w2, [x0, #:lo12:.LANCHOR105]
	add	w22, w1, w22
	stp	x0, x27, [x29, 112]
	and	w22, w22, 65535
	add	w24, w24, w2
	mov	w2, 65535
	and	w24, w24, 65535
	cmp	w3, w2
	beq	.L3980
	cbnz	w25, .L3981
	adrp	x0, .LANCHOR92
	ldrh	w0, [x0, #:lo12:.LANCHOR92]
	cmp	w21, w0, lsl 1
	blt	.L3981
.L4086:
	mov	w19, 16
	b	.L3969
.L3981:
	adrp	x5, .LANCHOR102
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
	adrp	x25, .LANCHOR90
	ldrh	w1, [x5, #:lo12:.LANCHOR102]
	add	w1, w1, 1
	and	w1, w1, 65535
	strh	w1, [x5, #:lo12:.LANCHOR102]
	bl	_list_get_gc_head_node
	and	w3, w0, 65535
	mov	w1, 65535
	cmp	w3, w1
	beq	.L3982
	adrp	x4, .LANCHOR11
	ubfiz	x3, x3, 1, 16
	adrp	x1, .LANCHOR158
	mov	x19, x1
	ldr	x4, [x4, #:lo12:.LANCHOR11]
	ldr	w2, [x1, #:lo12:.LANCHOR158]
	add	w2, w2, 1
	str	w2, [x1, #:lo12:.LANCHOR158]
	ldrh	w3, [x4, x3]
	adrp	x4, .LANCHOR100
	ldrh	w4, [x4, #:lo12:.LANCHOR100]
	cmp	w4, w3
	bcs	.L3983
	adrp	x1, .LANCHOR8
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	cmp	w2, w1, lsr 4
	bls	.L3982
	adrp	x1, .LANCHOR106
	ldrh	w1, [x1, #:lo12:.LANCHOR106]
	cmp	w1, w3
	bls	.L3982
.L3983:
	ldrb	w2, [x25, #:lo12:.LANCHOR90]
	mov	w1, 0
	bl	gc_add_sblk
	cbz	w0, .L3984
	mov	w0, 1
	str	wzr, [x19, #:lo12:.LANCHOR158]
	strb	w0, [x20, #:lo12:.LANCHOR157]
	b	.L4086
.L3982:
	strh	wzr, [x5, #:lo12:.LANCHOR102]
.L3984:
	cmp	w22, 15
	bls	.L4088
	adrp	x0, .LANCHOR97
	ldrh	w1, [x0, #:lo12:.LANCHOR97]
	adrp	x0, .LANCHOR107
	ldrh	w0, [x0, #:lo12:.LANCHOR107]
	cmp	w1, w0
	bhi	.L4088
	cmp	w24, 0
	cset	w19, eq
	add	w19, w19, 1
.L3985:
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 8, .L3986
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	mov	w4, w22
	ldrb	w2, [x25, #:lo12:.LANCHOR90]
	mov	w3, w21
	mov	w1, 2807
	ldrh	w7, [x0, 122]
	ldrh	w6, [x0, 120]
	ldrh	w5, [x0, 124]
	ldrh	w0, [x26, 80]
	str	w0, [sp]
	adrp	x0, .LC233
	add	x0, x0, :lo12:.LC233
	bl	printf
.L3986:
	ldrb	w0, [x25, #:lo12:.LANCHOR90]
	mov	w2, 1
	mov	w1, w19
	bl	gc_search_src_blk
	cmp	w0, 0
	ble	.L3987
.L3988:
	mov	w0, 1
.L4174:
	strb	w0, [x20, #:lo12:.LANCHOR157]
	b	.L4086
.L4088:
	mov	w19, 2
	b	.L3985
.L3987:
	ldrb	w0, [x25, #:lo12:.LANCHOR90]
	mov	w2, 1
	mov	w1, 3
	bl	gc_search_src_blk
	cmp	w0, 0
	bgt	.L3988
	b	.L4086
.L3980:
	cmp	w25, 1
	bne	.L3990
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	ldrh	w0, [x0, 150]
	cbz	w0, .L3991
	cmp	w1, 8
	bls	.L3991
	bl	gc_ink_check_sblk
.L3991:
	bl	gc_scan_static_data
	adrp	x26, .LANCHOR90
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	ldrh	w0, [x0, 122]
	cbz	w0, .L3992
.L3993:
	mov	w0, 1
	strb	w0, [x26, #:lo12:.LANCHOR90]
	b	.L4174
.L3992:
	bl	gc_static_wearleveling
	mov	w19, w0
	cbnz	w0, .L3993
	adrp	x27, .LANCHOR159
	cbz	w22, .L3994
	cmp	w21, w24
	adrp	x1, .LANCHOR104
	bcs	.L3995
	ldrh	w0, [x1, #:lo12:.LANCHOR104]
	cmp	w0, w21
	bhi	.L3996
.L3995:
	ldrh	w1, [x1, #:lo12:.LANCHOR104]
	add	w0, w21, w24
	cmp	w0, w1
	blt	.L3996
	adrp	x0, .LANCHOR97
	ldrh	w1, [x0, #:lo12:.LANCHOR97]
	adrp	x0, .LANCHOR107
	ldrh	w0, [x0, #:lo12:.LANCHOR107]
	cmp	w1, w0
	bcc	.L3994
.L3996:
	mov	w0, 1
	mov	w1, 16
	strb	w0, [x26, #:lo12:.LANCHOR90]
	adrp	x0, .LANCHOR101
	add	x0, x0, :lo12:.LANCHOR101
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	adrp	x28, .LANCHOR158
	cmp	w1, w2
	beq	.L3997
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ldrh	w2, [x2, x1]
	ldrh	w1, [x27, #:lo12:.LANCHOR159]
	cmp	w2, w1
	bcs	.L3997
	cmp	w21, 2
	bls	.L3997
	strb	wzr, [x26, #:lo12:.LANCHOR90]
	mov	w2, 0
	str	wzr, [x28, #:lo12:.LANCHOR158]
	mov	w1, 1
	bl	gc_add_sblk
	cbnz	w0, .L3988
.L3997:
	mov	w1, 0
	adrp	x0, .LANCHOR96
	add	x0, x0, :lo12:.LANCHOR96
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L3998
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ldrh	w2, [x2, x1]
	ldrh	w1, [x27, #:lo12:.LANCHOR159]
	cmp	w2, w1
	bcs	.L3998
	cmp	w21, 2
	bls	.L3998
	strb	wzr, [x26, #:lo12:.LANCHOR90]
	mov	w2, 0
	str	wzr, [x28, #:lo12:.LANCHOR158]
	mov	w1, 1
	bl	gc_add_sblk
	cbnz	w0, .L3988
.L3998:
	ldrh	w0, [x27, #:lo12:.LANCHOR159]
	adrp	x1, .LANCHOR100
	add	w0, w0, 1
	ldrh	w5, [x1, #:lo12:.LANCHOR100]
	and	w0, w0, 65535
	strh	w0, [x27, #:lo12:.LANCHOR159]
	cmp	w0, w5, lsr 5
	bls	.L3999
	mov	w0, 4
	strh	w0, [x27, #:lo12:.LANCHOR159]
.L3999:
	adrp	x1, .LANCHOR93
	ldr	w0, [x28, #:lo12:.LANCHOR158]
	strh	wzr, [x1, #:lo12:.LANCHOR93]
	adrp	x1, .LANCHOR94
	add	w0, w0, 1
	str	w0, [x28, #:lo12:.LANCHOR158]
	strh	wzr, [x1, #:lo12:.LANCHOR94]
	adrp	x1, .LANCHOR95
	strh	wzr, [x1, #:lo12:.LANCHOR95]
	adrp	x1, .LANCHOR8
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	cmp	w0, w1, lsr 5
	adrp	x0, .LANCHOR97
	bls	.L4000
	ldrh	w1, [x0, #:lo12:.LANCHOR97]
	cmp	w1, w22
	bls	.L4000
	mov	w1, 0
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
	bl	_list_get_gc_head_node
	and	w0, w0, 65535
	mov	w1, 65535
	cmp	w0, w1
	bne	.L4001
.L4162:
	mov	w19, 16
	b	.L4002
.L4001:
	adrp	x1, .LANCHOR11
	ubfiz	x0, x0, 1, 16
	ldr	x1, [x1, #:lo12:.LANCHOR11]
	ldrh	w1, [x1, x0]
	adrp	x0, .LANCHOR85
	ldrb	w0, [x0, #:lo12:.LANCHOR85]
	mul	w0, w0, w5
	cmp	w1, w0
	bgt	.L4162
	str	wzr, [x28, #:lo12:.LANCHOR158]
	mov	w2, 4
.L4168:
	mov	w1, 2
.L4161:
	ldrb	w0, [x26, #:lo12:.LANCHOR90]
	bl	gc_search_src_blk
	and	w0, w0, 65535
	cbz	w0, .L4162
	b	.L3988
.L4000:
	ldrh	w1, [x0, #:lo12:.LANCHOR97]
	adrp	x0, .LANCHOR107
	ldrh	w0, [x0, #:lo12:.LANCHOR107]
	cmp	w1, w0
	bcc	.L4005
	mov	w2, 1
	b	.L4168
.L4005:
	ldr	x0, [x29, 120]
	ldrh	w0, [x0, #:lo12:.LANCHOR103]
	cbnz	w0, .L4006
	ldr	x0, [x29, 112]
	ldrh	w0, [x0, #:lo12:.LANCHOR105]
	cmp	w0, 8
	bls	.L4007
.L4006:
	mov	w2, 4
	mov	w1, 1
	b	.L4161
.L4007:
	adrp	x0, .LANCHOR76+2110
	ldrh	w0, [x0, #:lo12:.LANCHOR76+2110]
	cbnz	w0, .L4162
.L4002:
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	adrp	x28, .LANCHOR90
	mov	w1, 1
	mov	x23, x28
	strb	w1, [x28, #:lo12:.LANCHOR90]
	ldrh	w0, [x0, 124]
	cbz	w0, .L4008
	strb	wzr, [x28, #:lo12:.LANCHOR90]
	strb	w1, [x20, #:lo12:.LANCHOR157]
.L3969:
	mov	w0, w19
	ldp	x19, x20, [sp, 32]
	ldp	x21, x22, [sp, 48]
	ldp	x23, x24, [sp, 64]
	ldp	x25, x26, [sp, 80]
	ldp	x27, x28, [sp, 96]
	ldp	x29, x30, [sp, 16]
	add	sp, sp, 144
	ret
.L3994:
	adrp	x0, .LANCHOR100
	ldrh	w1, [x0, #:lo12:.LANCHOR100]
	ldrh	w0, [x27, #:lo12:.LANCHOR159]
	cmp	w0, w1, lsr 5
	bcc	.L4162
	mov	w0, 4
	strh	w0, [x27, #:lo12:.LANCHOR159]
	b	.L4162
.L3990:
	adrp	x0, .LANCHOR92
	ldrh	w0, [x0, #:lo12:.LANCHOR92]
	cmp	w0, w21
	bcs	.L4162
	ldrh	w0, [x26, 124]
	cbz	w0, .L4086
	b	.L4162
.L4008:
	adrp	x0, .LANCHOR92
	mov	x26, x0
	ldrh	w2, [x0, #:lo12:.LANCHOR92]
	cmp	w21, w2
	bcs	.L4009
	cbz	w22, .L4010
	cmp	w22, 16
	bls	.L4011
	adrp	x0, .LANCHOR97
	ldrh	w2, [x0, #:lo12:.LANCHOR97]
	adrp	x0, .LANCHOR107
	ldrh	w0, [x0, #:lo12:.LANCHOR107]
	cmp	w2, w0
	bhi	.L4011
	mov	w2, 4
	mov	w0, w1
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L4012
.L4169:
	mov	w2, 4
	mov	w1, 3
	ldrb	w0, [x28, #:lo12:.LANCHOR90]
	b	.L4164
.L4012:
	mov	w1, 0
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
	bl	_list_get_gc_head_node
	and	w3, w0, 65535
	mov	w1, 65535
	cmp	w3, w1
	beq	.L4015
	adrp	x4, .LANCHOR11
	ubfiz	x3, x3, 1, 16
	adrp	x1, .LANCHOR158
	mov	x21, x1
	ldr	x4, [x4, #:lo12:.LANCHOR11]
	ldr	w2, [x1, #:lo12:.LANCHOR158]
	add	w2, w2, 1
	str	w2, [x1, #:lo12:.LANCHOR158]
	ldrh	w3, [x4, x3]
	adrp	x4, .LANCHOR100
	ldrh	w4, [x4, #:lo12:.LANCHOR100]
	cmp	w4, w3
	bcs	.L4016
	adrp	x1, .LANCHOR8
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	cmp	w2, w1, lsr 4
	bls	.L4015
	adrp	x1, .LANCHOR106
	ldrh	w1, [x1, #:lo12:.LANCHOR106]
	cmp	w1, w3
	bls	.L4015
.L4016:
	ldrb	w2, [x23, #:lo12:.LANCHOR90]
	mov	w1, 0
	bl	gc_add_sblk
	str	wzr, [x21, #:lo12:.LANCHOR158]
	adrp	x0, .LANCHOR128
	mov	w1, 1
	str	w1, [x0, #:lo12:.LANCHOR128]
.L4015:
	mov	w0, 1
	strb	w0, [x20, #:lo12:.LANCHOR157]
	b	.L3969
.L4011:
	mov	w2, 1
	mov	w1, 2
	mov	w0, w2
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L4015
	ldrb	w0, [x23, #:lo12:.LANCHOR90]
	mov	w2, 4
	mov	w1, 3
.L4164:
	bl	gc_search_src_blk
	and	w0, w0, 65535
.L4013:
	cbnz	w0, .L4015
	b	.L3969
.L4010:
	strb	wzr, [x28, #:lo12:.LANCHOR90]
	cmp	w21, 16
	bls	.L4018
	mov	w2, 4
	mov	w1, 3
	mov	w0, 0
	b	.L4164
.L4018:
	mov	w2, w1
	mov	w0, 0
	bl	gc_search_src_blk
	tst	w0, 65535
	bne	.L4015
	b	.L4169
.L4009:
	cmp	w25, 1
	bne	.L3969
	cmp	w21, w2, lsl 1
	bge	.L4019
	cmp	w24, w22, lsr 1
	bcs	.L4020
	adrp	x1, .LANCHOR97
	ldrh	w2, [x1, #:lo12:.LANCHOR97]
	adrp	x1, .LANCHOR107
	ldrh	w1, [x1, #:lo12:.LANCHOR107]
	cmp	w2, w1
	bcs	.L4020
	adrp	x1, .LANCHOR104
	ldrh	w1, [x1, #:lo12:.LANCHOR104]
	lsr	w1, w1, 2
	strh	w1, [x0, #:lo12:.LANCHOR92]
	b	.L3969
.L4020:
	mov	w1, 8
	adrp	x25, .LANCHOR101
	add	x0, x25, :lo12:.LANCHOR101
	bl	_list_get_gc_head_node
	and	w1, w0, 65535
	mov	w2, 65535
	cmp	w1, w2
	beq	.L4021
	adrp	x2, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	ldr	x2, [x2, #:lo12:.LANCHOR11]
	ldrh	w1, [x2, x1]
	cmp	w1, 3
	bhi	.L4021
	cbz	w21, .L4021
	strb	wzr, [x23, #:lo12:.LANCHOR90]
	mov	w2, 0
	mov	w1, 1
	bl	gc_add_sblk
	cbnz	w0, .L4015
.L4021:
	mov	w1, 0
	adrp	x0, .LANCHOR98
	add	x0, x0, :lo12:.LANCHOR98
	bl	_list_get_gc_head_node
	and	w28, w0, 65535
	mov	w1, 65535
	mov	w3, w28
	cmp	w28, w1
	bne	.L4022
.L4027:
	cmp	w22, 1
	bhi	.L4023
.L4024:
	cmp	w21, w24
	adrp	x21, .LANCHOR104
	bcs	.L4031
	mov	w1, 4
	strb	wzr, [x23, #:lo12:.LANCHOR90]
	add	x0, x25, :lo12:.LANCHOR101
	bl	_list_get_gc_head_node
	and	w0, w0, 65535
	mov	w1, 65535
	cmp	w0, w1
	beq	.L4031
	adrp	x1, .LANCHOR11
	ubfiz	x0, x0, 1, 16
	adrp	x2, .LANCHOR85
	ldr	x1, [x1, #:lo12:.LANCHOR11]
	ldrb	w2, [x2, #:lo12:.LANCHOR85]
	ldrh	w1, [x1, x0]
	adrp	x0, .LANCHOR100
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	mul	w0, w0, w2
	cmp	w1, w0, lsr 1
	ble	.L4033
.L4031:
	ldrh	w0, [x21, #:lo12:.LANCHOR104]
	lsr	w0, w0, 2
	strh	w0, [x26, #:lo12:.LANCHOR92]
	b	.L3969
.L4022:
	adrp	x2, .LANCHOR158
	adrp	x4, .LANCHOR8
	uxtw	x28, w28
	ldr	w1, [x2, #:lo12:.LANCHOR158]
	ldrh	w4, [x4, #:lo12:.LANCHOR8]
	add	w1, w1, 1
	str	w1, [x2, #:lo12:.LANCHOR158]
	cmp	w1, w4, lsr 4
	adrp	x4, .LANCHOR11
	bls	.L4025
	ldr	x1, [x4, #:lo12:.LANCHOR11]
	str	wzr, [x2, #:lo12:.LANCHOR158]
	ldrh	w2, [x1, x28, lsl 1]
	adrp	x1, .LANCHOR106
	ldrh	w1, [x1, #:lo12:.LANCHOR106]
	cmp	w2, w1
	bcs	.L4025
	mov	w5, 1
	str	x4, [x29, 96]
	strb	w5, [x23, #:lo12:.LANCHOR90]
	mov	w2, 1
	stp	w3, w5, [x29, 104]
	mov	w1, 0
	bl	gc_add_sblk
	ldp	w3, w5, [x29, 104]
	ldr	x4, [x29, 96]
	cbz	w0, .L4025
	strb	w5, [x20, #:lo12:.LANCHOR157]
	b	.L3969
.L4025:
	ldr	x0, [x4, #:lo12:.LANCHOR11]
	ldrh	w1, [x0, x28, lsl 1]
	adrp	x0, .LANCHOR100
	ldrh	w0, [x0, #:lo12:.LANCHOR100]
	cmp	w1, w0, lsr 1
	bhi	.L4026
	mov	w2, 0
	mov	w1, 1
	mov	w0, w3
	bl	gc_add_sblk
	b	.L4015
.L4026:
	ldp	x2, x0, [x29, 112]
	ldrh	w2, [x2, #:lo12:.LANCHOR105]
	ldrh	w0, [x0, #:lo12:.LANCHOR103]
	add	w0, w0, w2
	adrp	x2, .LANCHOR104
	ldrh	w2, [x2, #:lo12:.LANCHOR104]
	cmp	w0, w2, lsl 1
	ble	.L4027
	adrp	x0, .LANCHOR106
	ldrh	w0, [x0, #:lo12:.LANCHOR106]
	cmp	w0, w1
	bcc	.L4024
	b	.L4027
.L4023:
	mov	w1, 1
	strb	w1, [x23, #:lo12:.LANCHOR90]
	cmp	w22, 16
	bls	.L4028
	adrp	x0, .LANCHOR97
	ldrh	w2, [x0, #:lo12:.LANCHOR97]
	adrp	x0, .LANCHOR107
	ldrh	w0, [x0, #:lo12:.LANCHOR107]
	cmp	w2, w0
	bhi	.L4028
	mov	w0, w1
	mov	w2, 4
.L4171:
	bl	gc_search_src_blk
	ands	w0, w0, 65535
	bne	.L4029
	ldrb	w0, [x23, #:lo12:.LANCHOR90]
	mov	w2, 4
	mov	w1, 3
	bl	gc_search_src_blk
	and	w0, w0, 65535
.L4029:
	adrp	x1, .LANCHOR104
	cmp	w21, w24, lsr 1
	ldrh	w1, [x1, #:lo12:.LANCHOR104]
	bls	.L4165
	lsr	w1, w1, 2
.L4166:
	strh	w1, [x26, #:lo12:.LANCHOR92]
	b	.L4013
.L4028:
	mov	w2, 1
	mov	w1, 2
	mov	w0, w2
	b	.L4171
.L4033:
	mov	w1, 3
	mov	w2, 4
	mov	w0, 0
	bl	gc_search_src_blk
	ldrh	w1, [x21, #:lo12:.LANCHOR104]
	and	w0, w0, 65535
.L4165:
	lsr	w1, w1, 1
	b	.L4166
.L4019:
	adrp	x1, .LANCHOR104
	ldrh	w1, [x1, #:lo12:.LANCHOR104]
	lsr	w1, w1, 2
	strh	w1, [x0, #:lo12:.LANCHOR92]
	adrp	x0, .LANCHOR76+2110
	ldrh	w0, [x0, #:lo12:.LANCHOR76+2110]
	cmp	w0, 0
	csel	w19, w19, wzr, ne
	b	.L3969
.L3973:
	adrp	x7, .LANCHOR76
	mov	w0, 65535
	ldrh	w1, [x7, #:lo12:.LANCHOR76]
	cmp	w1, w0
	bne	.L4034
	bl	gc_get_src_blk
	strh	w0, [x7, #:lo12:.LANCHOR76]
.L4034:
	ldrh	w0, [x7, #:lo12:.LANCHOR76]
	mov	w1, 65535
	cmp	w0, w1
	beq	.L4035
	adrp	x1, .LANCHOR8
	ldrh	w1, [x1, #:lo12:.LANCHOR8]
	cmp	w1, w0
	bhi	.L4035
	mov	w0, -1
	strh	w0, [x7, #:lo12:.LANCHOR76]
.L4035:
	ldrh	w3, [x7, #:lo12:.LANCHOR76]
	mov	w0, 65535
	add	x1, x7, :lo12:.LANCHOR76
	cmp	w3, w0
	beq	.L4173
	adrp	x0, .LANCHOR9
	ldrh	w5, [x1, 56]
	uxtw	x4, w3
	ldr	x2, [x0, #:lo12:.LANCHOR9]
	add	x2, x2, x4, lsl 2
	cbz	w5, .L4037
	add	x1, x1, 58
	mov	w0, 0
.L4039:
	ldrh	w6, [x1], 2
	cmp	w6, w3
	bne	.L4038
.L4043:
	adrp	x0, .LANCHOR76
	mov	w1, -1
	strh	w1, [x0, #:lo12:.LANCHOR76]
	b	.L4086
.L4038:
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w5, w0
	bne	.L4039
.L4037:
	ldrb	w0, [x2, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L4040
	tst	w0, 192
	bne	.L4041
.L4040:
	adrp	x0, .LANCHOR11
	ldr	x0, [x0, #:lo12:.LANCHOR11]
	ldrh	w0, [x0, x4, lsl 1]
	cbz	w0, .L4043
	mov	w2, 3306
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L4043
.L4041:
	mov	w0, 2
	b	.L4174
.L3974:
	bl	gc_scan_src_blk
	cmn	w0, #1
	bne	.L4044
	mov	w0, 3
	b	.L4174
.L4044:
	adrp	x19, .LANCHOR76
	mov	w2, 65535
	add	x0, x19, :lo12:.LANCHOR76
	ldrh	w1, [x19, #:lo12:.LANCHOR76]
	cmp	w1, w2
	beq	.L3988
	ldrh	w2, [x0, 24]
	cbz	w2, .L4045
	mov	w1, 4
	strh	wzr, [x0, 26]
	strb	w1, [x20, #:lo12:.LANCHOR157]
	b	.L4086
.L4045:
	mov	w0, 1
	strb	w0, [x20, #:lo12:.LANCHOR157]
	adrp	x0, .LANCHOR11
	ubfiz	x1, x1, 1, 16
	mov	x20, x0
	ldr	x2, [x0, #:lo12:.LANCHOR11]
	ldrh	w1, [x2, x1]
	cbz	w1, .L4046
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	mov	w2, 3336
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4046:
	ldrh	w0, [x19, #:lo12:.LANCHOR76]
	add	x21, x19, :lo12:.LANCHOR76
	bl	ftl_free_sblk
	ldr	x0, [x20, #:lo12:.LANCHOR11]
	ldrh	w1, [x19, #:lo12:.LANCHOR76]
	strh	wzr, [x0, x1, lsl 1]
	ldrh	w0, [x21, 30]
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w0, 8
	bhi	.L4047
	strh	w0, [x21, 30]
	b	.L4043
.L4047:
	strh	wzr, [x21, 30]
	bl	ftl_flush
	bl	pm_flush
	bl	ftl_ext_info_flush
	mov	w0, 0
	bl	ftl_info_flush
	b	.L4043
.L3975:
	adrp	x19, .LANCHOR76
	adrp	x23, .LANCHOR100
	add	x22, x19, :lo12:.LANCHOR76
	add	x23, x23, :lo12:.LANCHOR100
.L4135:
	bl	gc_scan_src_blk_one_page
	ldrh	w1, [x22, 2]
	ldrh	w0, [x23]
	cmp	w1, w0
	bcs	.L4049
	cmp	w21, 7
	bls	.L4135
	b	.L4086
.L4049:
	ldrh	w3, [x22, 24]
	ldrh	w1, [x22]
	cbz	w3, .L4050
	mov	w0, 4
	strb	w0, [x20, #:lo12:.LANCHOR157]
	adrp	x20, .LANCHOR11
	ubfiz	x0, x1, 1, 16
	strh	wzr, [x22, 26]
	ldr	x2, [x20, #:lo12:.LANCHOR11]
	ldrh	w2, [x2, x0]
	cmp	w3, w2
	beq	.L4051
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 10, .L4051
	adrp	x0, .LC234
	add	x0, x0, :lo12:.LC234
	bl	printf
.L4051:
	ldrh	w2, [x19, #:lo12:.LANCHOR76]
	add	x0, x19, :lo12:.LANCHOR76
	ldr	x1, [x20, #:lo12:.LANCHOR11]
	ldrh	w0, [x0, 24]
	ldrh	w1, [x1, x2, lsl 1]
	cmp	w1, w0
	beq	.L4052
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	mov	w2, 3379
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4052:
	add	x0, x19, :lo12:.LANCHOR76
	ldrh	w1, [x19, #:lo12:.LANCHOR76]
	ldrh	w2, [x0, 24]
	ldr	x0, [x20, #:lo12:.LANCHOR11]
	strh	w2, [x0, x1, lsl 1]
	b	.L4086
.L4050:
	adrp	x0, .LANCHOR9
	ldr	x21, [x0, #:lo12:.LANCHOR9]
	mov	w0, 1
	strb	w0, [x20, #:lo12:.LANCHOR157]
	adrp	x0, .LANCHOR19
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	add	x21, x21, x1, uxth 2
	tbz	x0, 8, .L4053
	ldrb	w2, [x21, 2]
	adrp	x0, .LC235
	add	x0, x0, :lo12:.LC235
	ubfx	x2, x2, 5, 3
	bl	printf
.L4053:
	ldrb	w0, [x21, 2]
	and	w1, w0, 224
	cmp	w1, 224
	beq	.L4054
	tst	w0, 192
	bne	.L4055
.L4054:
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	mov	w2, 3389
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4055:
	ldrh	w0, [x19, #:lo12:.LANCHOR76]
	add	x20, x19, :lo12:.LANCHOR76
	bl	ftl_free_sblk
	mov	w0, -1
	strh	w0, [x19, #:lo12:.LANCHOR76]
	ldrh	w0, [x20, 30]
	add	w0, w0, 1
	and	w0, w0, 65535
	cmp	w0, 8
	bhi	.L4056
	strh	w0, [x20, 30]
	b	.L4086
.L4056:
	strh	wzr, [x20, 30]
.L4172:
	bl	flt_sys_flush
	b	.L4086
.L3976:
	ldrh	w1, [x26, 80]
	mov	w0, 65535
	cmp	w1, w0
	bne	.L4057
	adrp	x0, .LANCHOR90
	ldrb	w19, [x0, #:lo12:.LANCHOR90]
	cmp	w19, 1
	bne	.L4057
	bl	ftl_flush
	adrp	x0, .LANCHOR76
	add	x1, x0, :lo12:.LANCHOR76
	mov	x20, x0
	ldrh	w1, [x1, 2192]
	cbz	w1, .L4058
	mov	w0, w19
	mov	w1, 5
.L4167:
	bl	zftl_gc_get_free_sblk
	and	w19, w0, 65535
	mov	w0, 65535
	cmp	w19, w0
	beq	.L4060
	adrp	x0, .LANCHOR9
	ldr	x21, [x0, #:lo12:.LANCHOR9]
	add	x21, x21, x19, uxth 2
	ldrb	w0, [x21, 2]
	tst	w0, 224
	beq	.L4061
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	mov	w2, 3423
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4061:
	ldrb	w0, [x21, 2]
	mov	w1, 5
	bfi	w0, w1, 5, 3
	orr	w0, w0, 16
	strb	w0, [x21, 2]
.L4085:
	mov	w1, 1
	mov	w0, w19
	bl	ftl_erase_sblk
	adrp	x22, .LANCHOR91
	mov	w0, 5
	strb	w0, [x26, 84]
	add	x1, x26, 96
	mov	w0, w19
	bl	ftl_get_blk_list_in_sblk
	and	w0, w0, 255
	adrp	x1, .LANCHOR100
	adrp	x21, .LANCHOR85
	strb	w0, [x26, 89]
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	ldrh	w2, [x22, #:lo12:.LANCHOR91]
	strh	w19, [x26, 80]
	strh	wzr, [x26, 82]
	mul	w0, w0, w1
	strb	wzr, [x26, 85]
	strh	w0, [x26, 86]
	mov	w1, 255
	ldrb	w0, [x21, #:lo12:.LANCHOR85]
	strh	wzr, [x26, 90]
	mul	w2, w2, w0
	adrp	x0, .LANCHOR160
	ldr	x0, [x0, #:lo12:.LANCHOR160]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldrb	w0, [x21, #:lo12:.LANCHOR85]
	mov	w1, 255
	ldrh	w2, [x22, #:lo12:.LANCHOR91]
	mul	w2, w2, w0
	adrp	x0, .LANCHOR161
	ldr	x0, [x0, #:lo12:.LANCHOR161]
	lsl	w2, w2, 2
	bl	ftl_memset
	ldrb	w0, [x21, #:lo12:.LANCHOR85]
	mov	w1, 255
	ldrh	w2, [x22, #:lo12:.LANCHOR91]
	mul	w2, w2, w0
	adrp	x0, .LANCHOR88
	ldr	x0, [x0, #:lo12:.LANCHOR88]
	bl	ftl_memset
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	mov	w1, -1
	str	w19, [x0, 132]
	strh	w1, [x0, 128]
	strh	w1, [x0, 130]
	bl	pm_flush
	bl	ftl_ext_info_flush
	adrp	x0, .LANCHOR69
	mov	w1, -1
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	strh	w19, [x0, 126]
	add	x0, x20, :lo12:.LANCHOR76
	str	w1, [x0, 2196]
	strh	wzr, [x0, 2106]
	strh	wzr, [x0, 56]
	strh	wzr, [x0, 2108]
	strh	wzr, [x0, 2194]
	mov	w0, 0
	bl	ftl_info_flush
	b	.L4086
.L4058:
	mov	w1, 5
	mov	w0, 0
	b	.L4167
.L4057:
	cmp	w25, 1
	mov	w24, 4
	csinc	w24, w24, wzr, eq
	cmp	w21, 15
	mov	w0, w24
	add	w24, w24, 4
	adrp	x25, .LANCHOR90
	adrp	x21, .LANCHOR76
	csel	w24, w24, w0, ls
	add	x25, x25, :lo12:.LANCHOR90
	add	x19, x21, :lo12:.LANCHOR76
	add	x27, x26, 80
.L4064:
	sub	w24, w24, #1
	and	w24, w24, 255
	cmp	w24, 255
	beq	.L4086
	bl	gc_do_copy_back
	ldrb	w0, [x25]
	cbnz	w0, .L4065
	adrp	x0, .LANCHOR57
	ldrb	w0, [x0, #:lo12:.LANCHOR57]
	cmp	w0, 3
	bhi	.L4066
	bl	ftl_write_commit
.L4066:
	ldrh	w1, [x19, 26]
	ldrh	w0, [x19, 24]
	cmp	w1, w0
	bcc	.L4064
	mov	w0, 1
	strb	w0, [x20, #:lo12:.LANCHOR157]
	bl	ftl_write_commit
	bl	ftl_flush
	adrp	x0, .LANCHOR11
	ldrh	w2, [x19]
	mov	x19, x0
	ldr	x1, [x0, #:lo12:.LANCHOR11]
	ldrh	w1, [x1, x2, lsl 1]
	cbz	w1, .L4068
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	mov	w2, 3507
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4068:
	ldrh	w0, [x21, #:lo12:.LANCHOR76]
	ldr	x2, [x19, #:lo12:.LANCHOR11]
	ubfiz	x1, x0, 1, 16
	ldrh	w1, [x2, x1]
	cbnz	w1, .L4069
	bl	ftl_free_sblk
	b	.L4043
.L4069:
	mov	w2, 1
	mov	w1, 0
	bl	gc_add_sblk
	b	.L4043
.L4065:
	ldrh	w0, [x19, 2194]
	cbz	w0, .L4070
	strh	wzr, [x19, 2194]
	bl	sblk_wait_write_queue_completed
	bl	gc_write_completed
	ldr	w0, [x19, 2196]
	adrp	x19, .LANCHOR69
	cmn	w0, #1
	beq	.L4071
	adrp	x1, .LANCHOR130
	ldrb	w1, [x1, #:lo12:.LANCHOR130]
	cbnz	w1, .L4072
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbz	w1, .L4073
.L4072:
	ldr	x1, [x19, #:lo12:.LANCHOR69]
	ldr	w2, [x1, 156]
	mov	w1, 20041
	movk	w1, 0x444b, lsl 16
	cmp	w2, w1
	bne	.L4073
	adrp	x1, .LANCHOR80
	ldrh	w3, [x1, #:lo12:.LANCHOR80]
	adrp	x1, .LANCHOR31
	ldrb	w2, [x1, #:lo12:.LANCHOR31]
	mov	w1, 24
	lsr	w0, w0, w3
	sub	w1, w1, w2
	sub	w2, w1, w3
	mov	w1, 1
	lsl	w1, w1, w2
	sub	w1, w1, #1
	and	w0, w1, w0
	adrp	x1, .LANCHOR81
	ldrb	w1, [x1, #:lo12:.LANCHOR81]
	udiv	w0, w0, w1
	adrp	x1, .LANCHOR9
	ldr	x2, [x1, #:lo12:.LANCHOR9]
	lsl	x0, x0, 2
	add	x4, x2, x0
	ldrb	w1, [x4, 2]
	tbz	x1, 3, .L4071
	adrp	x5, .LANCHOR104
	ldrh	w3, [x22, #:lo12:.LANCHOR109]
	ldrh	w5, [x5, #:lo12:.LANCHOR104]
	add	w3, w3, 8
	cmp	w3, w5
	bge	.L4071
	and	w1, w1, -25
	strb	w1, [x4, 2]
	adrp	x1, .LANCHOR10
	ldr	w3, [x2, x0]
	ldrh	w1, [x1, #:lo12:.LANCHOR10]
	ldrh	w4, [x2, x0]
	ubfx	x3, x3, 11, 8
	and	w5, w4, 2047
	mul	w1, w1, w3
	lsr	w3, w3, 3
	add	w1, w1, w1, lsl 1
	add	w1, w5, w1, lsr 2
	bfi	w4, w1, 0, 11
	strh	w4, [x2, x0]
	ldr	w1, [x2, x0]
	bfi	w1, w3, 11, 8
	str	w1, [x2, x0]
.L4071:
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	add	x22, x21, :lo12:.LANCHOR76
	strh	wzr, [x22, 56]
	ldrh	w0, [x0, 80]
	str	wzr, [x22, 2196]
	bl	ftl_free_sblk
	ldr	x1, [x23, #:lo12:.LANCHOR12]
	mov	w0, -1
	ldr	x2, [x19, #:lo12:.LANCHOR69]
	strh	w0, [x1, 80]
	strh	w0, [x2, 126]
	strh	w0, [x1, 130]
	ldr	x0, [x22, 8]
	cbz	x0, .L4074
	bl	zbuf_free
.L4074:
	add	x21, x21, :lo12:.LANCHOR76
	str	xzr, [x21, 8]
	bl	flt_sys_flush
	mov	w2, 3567
	strb	wzr, [x20, #:lo12:.LANCHOR157]
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L4086
.L4073:
	bl	ftl_mask_bad_block
	b	.L4071
.L4070:
	ldrh	w0, [x27, 6]
	ldrh	w1, [x19, 26]
	cmp	w0, 1
	ldrh	w0, [x19, 24]
	bls	.L4075
	cmp	w1, w0
	bcc	.L4064
	mov	w0, 1
	strb	w0, [x20, #:lo12:.LANCHOR157]
	ldrh	w0, [x19, 56]
	add	w1, w0, 1
	strh	w1, [x19, 56]
	add	x0, x19, x0, sxtw 1
	ldrh	w1, [x19]
	strh	w1, [x0, 58]
	mov	w0, -1
	strh	w0, [x19]
	b	.L4086
.L4075:
	mov	w2, 5
	strb	w2, [x20, #:lo12:.LANCHOR157]
	cmp	w1, w0
	bcc	.L4076
	ldrh	w0, [x19, 56]
	add	w1, w0, 1
	strh	w1, [x19, 56]
	add	x0, x19, x0, sxtw 1
	ldrh	w1, [x19]
	strh	w1, [x0, 58]
	mov	w0, -1
	strh	w0, [x19]
.L4076:
	bl	ftl_flush
	bl	sblk_wait_write_queue_completed
	bl	gc_write_completed
	ldr	x0, [x23, #:lo12:.LANCHOR12]
	ldrh	w1, [x26, 80]
	strh	w1, [x0, 128]
	bl	pm_flush
	bl	ftl_ext_info_flush
	adrp	x1, .LANCHOR100
	add	x0, x21, :lo12:.LANCHOR76
	adrp	x2, .LANCHOR35
	ldrh	w1, [x1, #:lo12:.LANCHOR100]
	strh	w1, [x0, 18]
	adrp	x1, .LANCHOR84
	ldrb	w2, [x2, #:lo12:.LANCHOR35]
	strh	wzr, [x0, 16]
	ldrb	w1, [x1, #:lo12:.LANCHOR84]
	strh	w1, [x0, 20]
	cbz	w2, .L4077
	adrp	x2, .LANCHOR91
	ldrh	w2, [x2, #:lo12:.LANCHOR91]
	strh	w2, [x0, 18]
	mov	w2, 1
	strh	w2, [x0, 20]
.L4077:
	cmp	w1, 2
	bne	.L4079
	add	x0, x21, :lo12:.LANCHOR76
	ldrh	w1, [x0, 18]
	ubfiz	w1, w1, 1, 15
	strh	w1, [x0, 18]
	adrp	x1, .LANCHOR86
	ldrb	w1, [x1, #:lo12:.LANCHOR86]
	cbnz	w1, .L4079
	mov	w1, 1
	strh	w1, [x0, 20]
.L4079:
	add	x21, x21, :lo12:.LANCHOR76
	strh	wzr, [x21, 22]
	b	.L4086
.L4082:
	ldrh	w1, [x24, 16]
	ldrh	w0, [x24, 18]
	cmp	w1, w0
	bcc	.L4083
	mov	w0, 6
	strb	w0, [x20, #:lo12:.LANCHOR157]
	ldr	x0, [x24, 8]
	bl	zbuf_free
	str	xzr, [x24, 8]
	b	.L4086
.L4083:
	cmp	w21, 15
	bls	.L3979
	cmp	w25, 1
	bne	.L4086
	add	w22, w22, 1
	and	w22, w22, 255
	cmp	w22, 4
	bls	.L3979
	b	.L4086
.L3978:
	bl	gc_update_l2p_map_new
	mov	w19, -1
	bl	gc_free_src_blk
	bl	ftl_flush
	bl	pm_flush
	strh	w19, [x26, 80]
	bl	ftl_ext_info_flush
	adrp	x0, .LANCHOR69
	ldr	x0, [x0, #:lo12:.LANCHOR69]
	strh	w19, [x0, 126]
	mov	w0, 0
	bl	ftl_info_flush
.L4173:
	strb	wzr, [x20, #:lo12:.LANCHOR157]
	b	.L4086
.L4060:
	mov	w2, 3430
	adrp	x1, .LANCHOR240
	adrp	x0, .LC0
	add	x1, x1, :lo12:.LANCHOR240
	add	x0, x0, :lo12:.LC0
	bl	printf
	b	.L4085
	.size	zftl_do_gc, .-zftl_do_gc
	.section	.text.zftl_discard,"ax",@progbits
	.align	2
	.global	zftl_discard
	.type	zftl_discard, %function
zftl_discard:
	stp	x29, x30, [sp, -128]!
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	mov	w19, w1
	adrp	x1, .LANCHOR73
	stp	x21, x22, [sp, 32]
	stp	x23, x24, [sp, 48]
	ldr	w1, [x1, #:lo12:.LANCHOR73]
	stp	x25, x26, [sp, 64]
	stp	x27, x28, [sp, 80]
	cmp	w0, w1
	ccmp	w19, w1, 2, cc
	bhi	.L4197
	add	w2, w0, w19
	cmp	w1, w2
	bcc	.L4197
	adrp	x24, .LANCHOR241
	add	w22, w0, 24576
	adrp	x0, .LANCHOR19
	str	x0, [x29, 104]
	ldr	w1, [x24, #:lo12:.LANCHOR241]
	ldr	w2, [x0, #:lo12:.LANCHOR19]
	add	w1, w19, w1
	str	w1, [x24, #:lo12:.LANCHOR241]
	tbz	x2, 12, .L4177
	adrp	x0, .LC236
	mov	w4, 0
	mov	w3, w19
	mov	w2, w22
	add	x0, x0, :lo12:.LC236
	bl	printf
.L4177:
	adrp	x23, .LANCHOR69
	adrp	x26, .LANCHOR68
	ldr	x0, [x23, #:lo12:.LANCHOR69]
	ldr	w27, [x0, 8]
	add	w1, w27, 1
	str	w1, [x0, 8]
	bl	ftl_write_commit
	bl	ftl_flush
	ldrb	w21, [x26, #:lo12:.LANCHOR68]
	udiv	w20, w22, w21
	msub	w25, w20, w21, w22
	cbz	w25, .L4178
	sub	w21, w21, w25
	mov	w0, w20
	cmp	w21, w19
	csel	w21, w21, w19, ls
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	bne	.L4179
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
.L4179:
	ldr	w0, [x29, 120]
	and	w28, w21, 65535
	cmn	w0, #1
	beq	.L4181
	mov	w0, 0
	bl	buf_alloc
	mov	x3, x0
	cbz	x0, .L4181
	strb	w25, [x0, 57]
	ubfiz	x25, x25, 9, 25
	strb	w21, [x0, 56]
	mov	w1, 0
	ldr	x0, [x0, 8]
	lsl	w2, w28, 9
	stp	w27, w20, [x3, 32]
	str	x3, [x29, 96]
	add	x0, x0, x25
	bl	ftl_memset
	ldr	x3, [x29, 96]
	mov	x0, x3
	bl	ftl_write_buf
	bl	ftl_write_commit
	ldr	x1, [x23, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4181:
	add	w20, w20, 1
	sub	w19, w19, w28
.L4178:
	cbz	w19, .L4183
	bl	ftl_flush
.L4183:
	adrp	x25, .LANCHOR80
	add	x21, x26, :lo12:.LANCHOR68
	add	x25, x25, :lo12:.LANCHOR80
	mov	w0, -1
	str	w0, [x29, 124]
.L4184:
	ldrb	w0, [x21]
	cmp	w19, w0
	bcs	.L4189
	cbz	w19, .L4191
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	bne	.L4192
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
.L4192:
	ldr	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4191
	mov	w0, 0
	bl	buf_alloc
	mov	x21, x0
	cbz	x0, .L4191
	strb	wzr, [x0, 57]
	strb	w19, [x0, 56]
	stp	w27, w20, [x21, 32]
	ldrb	w0, [x26, #:lo12:.LANCHOR68]
	cmp	w19, w0
	bcc	.L4194
	adrp	x1, .LANCHOR242
	adrp	x0, .LC0
	mov	w2, 1492
	add	x1, x1, :lo12:.LANCHOR242
	add	x0, x0, :lo12:.LC0
	bl	printf
.L4194:
	ldr	x0, [x21, 8]
	lsl	w2, w19, 9
	mov	w1, 0
	bl	ftl_memset
	mov	x0, x21
	bl	ftl_write_buf
	bl	ftl_write_commit
	ldr	x1, [x23, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4191:
	ldr	w1, [x24, #:lo12:.LANCHOR241]
	cmp	w1, 8192
	bls	.L4198
	ldr	x0, [x29, 104]
	ldr	w0, [x0, #:lo12:.LANCHOR19]
	tbz	x0, 12, .L4195
	adrp	x0, .LC236
	mov	w4, 0
	mov	w3, w19
	mov	w2, w22
	add	x0, x0, :lo12:.LC236
	bl	printf
.L4195:
	str	wzr, [x24, #:lo12:.LANCHOR241]
	bl	flt_sys_flush
	adrp	x0, .LANCHOR128
	mov	w1, 1
	str	w1, [x0, #:lo12:.LANCHOR128]
.L4198:
	mov	w0, 0
	b	.L4175
.L4189:
	mov	w0, w20
	bl	lpa_hash_get_ppa
	str	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4185
	mov	w0, 0
	bl	buf_alloc
	mov	x28, x0
	cbz	x0, .L4187
	ldrb	w2, [x21]
	mov	w1, 0
	strb	w2, [x0, 56]
	strb	wzr, [x0, 57]
	ldr	x0, [x0, 8]
	lsl	w2, w2, 9
	stp	w27, w20, [x28, 32]
	bl	ftl_memset
	mov	x0, x28
	bl	ftl_write_buf
	bl	ftl_write_commit
.L4224:
	ldr	x1, [x23, #:lo12:.LANCHOR69]
	ldr	w0, [x1, 76]
	add	w0, w0, 1
	str	w0, [x1, 76]
.L4187:
	ldrb	w0, [x21]
	add	w20, w20, 1
	sub	w19, w19, w0
	b	.L4184
.L4185:
	mov	w2, 0
	add	x1, x29, 120
	mov	w0, w20
	bl	pm_log2phys
	ldr	w0, [x29, 120]
	cmn	w0, #1
	beq	.L4187
	add	x1, x29, 124
	mov	w2, 1
	mov	w0, w20
	bl	pm_log2phys
	adrp	x0, .LANCHOR31
	ldrh	w2, [x25]
	ldrb	w1, [x0, #:lo12:.LANCHOR31]
	mov	w0, 24
	sub	w0, w0, w1
	sub	w1, w0, w2
	mov	w0, 1
	lsl	w0, w0, w1
	ldr	w1, [x29, 120]
	sub	w0, w0, #1
	lsr	w1, w1, w2
	and	w0, w0, w1
	adrp	x1, .LANCHOR81
	ldrb	w1, [x1, #:lo12:.LANCHOR81]
	udiv	w0, w0, w1
	bl	ftl_vpn_decrement
	b	.L4224
.L4197:
	mov	w0, -1
.L4175:
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x23, x24, [sp, 48]
	ldp	x25, x26, [sp, 64]
	ldp	x27, x28, [sp, 80]
	ldp	x29, x30, [sp], 128
	ret
	.size	zftl_discard, .-zftl_discard
	.section	.text.ftl_discard,"ax",@progbits
	.align	2
	.global	ftl_discard
	.type	ftl_discard, %function
ftl_discard:
	mov	w0, w1
	mov	w1, w2
	b	zftl_discard
	.size	ftl_discard, .-ftl_discard
	.section	.text.dump_pm_blk,"ax",@progbits
	.align	2
	.global	dump_pm_blk
	.type	dump_pm_blk, %function
dump_pm_blk:
	stp	x29, x30, [sp, -48]!
	mov	w2, 4
	adrp	x0, .LC237
	add	x0, x0, :lo12:.LC237
	add	x29, sp, 0
	stp	x19, x20, [sp, 16]
	adrp	x20, .LANCHOR69
	stp	x21, x22, [sp, 32]
	adrp	x21, .LANCHOR153
	ldr	x1, [x20, #:lo12:.LANCHOR69]
	mov	w19, 0
	mov	w22, 65535
	add	x1, x1, 704
	ldrh	w3, [x1, -6]
	bl	rknand_print_hex
	ldrh	w3, [x21, #:lo12:.LANCHOR153]
	add	x21, x21, :lo12:.LANCHOR153
	ldr	x1, [x20, #:lo12:.LANCHOR69]
	mov	w2, 2
	adrp	x0, .LC238
	add	x0, x0, :lo12:.LC238
	add	x1, x1, 416
	bl	rknand_print_hex
.L4227:
	ldrh	w0, [x21]
	cmp	w0, w19
	bhi	.L4229
	ldp	x19, x20, [sp, 16]
	ldp	x21, x22, [sp, 32]
	ldp	x29, x30, [sp], 48
	ret
.L4229:
	ldr	x0, [x20, #:lo12:.LANCHOR69]
	add	x0, x0, x19, sxtw 1
	ldrh	w0, [x0, 416]
	cmp	w0, w22
	beq	.L4228
	mov	x1, 0
	bl	ftl_sblk_dump
.L4228:
	add	w19, w19, 1
	and	w19, w19, 65535
	b	.L4227
	.size	dump_pm_blk, .-dump_pm_blk
	.global	g_pm_spare
	.global	pm_first_write
	.global	pm_force_gc
	.global	pm_gc_enable
	.global	pm_last_load_ram_id
	.global	pm_last_update_ram_id
	.global	pm_ram_info
	.global	sblk_gc_write_completed_queue_head
	.global	sblk_read_completed_queue_head
	.global	sblk_write_completed_queue_head
	.global	sblk_queue_head
	.global	slc_cache_sblk
	.global	xlc_data_sblk
	.global	slc_data_sblk
	.global	free_mix_sblk
	.global	free_xlc_sblk
	.global	free_slc_sblk
	.global	gp_data_xlc_data_head
	.global	gp_data_slc_data_head
	.global	gp_data_slc_cache_head
	.global	gp_free_mix_head
	.global	gp_free_xlc_head
	.global	gp_free_slc_head
	.global	gp_sblk_list_tbl
	.global	zftl_print_list_count
	.global	ftl_ext_info_first_write
	.global	ftl_sys_info_first_write
	.global	ftl_low_format_cur_blk
	.global	ftl_power_lost_flag
	.global	ftl_vpn_update_count
	.global	ftl_sblk_update_list_offset
	.global	ftl_sblk_update_list
	.global	ftl_sblk_vpn_update_id
	.global	ftl_sblk_lpa_tbl
	.global	ftl_sblk_vpn
	.global	gp_ftl_ext_info
	.global	gp_ftl_info
	.global	gp_blk_info
	.global	ftl_tmp_buffer
	.global	ftl_ext_info_data_buffer
	.global	ftl_info_data_buffer
	.global	ftl_tmp_spare
	.global	ftl_info_spare
	.global	g_ftl_info_blk
	.global	tlc_b05a_prog_tbl
	.global	tlc_prog_order
	.global	gc_des_ppa_tbl
	.global	gc_valid_page_ppa
	.global	gc_page_buf_id
	.global	gc_pre_ppa_tbl
	.global	gc_lpa_tbl
	.global	g_gc_info
	.global	gc_xlc_search_index
	.global	gc_xlc_data_index
	.global	gc_slc_cache_index
	.global	gc_slc_data_index
	.global	gc_free_slc_sblk_th
	.global	gc_slc_mode_vpn_th
	.global	gc_slc_mode_slc_vpn_th
	.global	gc_slc_mode_tlc_vpn_th
	.global	gc_tlc_mode_tlc_vpn_th
	.global	gc_tlc_mode_slc_vpn_th
	.global	gc_state
	.global	gc_mode
	.global	p_read_ahead_ext_buf
	.global	discard_sector_count
	.global	read_ahead_lpa
	.global	_ftl_gc_tag_page_num
	.global	read_buf_count
	.global	read_buf_head
	.global	write_commit_count
	.global	write_commit_head
	.global	write_buf_count
	.global	write_buf_head
	.global	ftl_flush_jiffies
	.global	lpa_hash
	.global	lpa_hash_index
	.global	_c_slc_to_xlc_ec_ratio
	.global	_c_mix_max_xlc_ec_count
	.global	_c_mix_max_slc_ec_count
	.global	_c_swl_xlc_gc_th
	.global	_c_swl_slc_gc_th
	.global	_gc_after_discard_en
	.global	_last_write_time
	.global	_last_read_time
	.global	_min_slc_super_block
	.global	_max_xlc_super_block
	.global	_c_max_pm_sblk
	.global	_c_ftl_pm_page_num
	.global	_c_totle_log_page
	.global	_c_totle_data_density
	.global	_c_user_data_density
	.global	_c_totle_phy_density
	.global	_c_ftl_block_addr_log2
	.global	_c_ftl_block_align_addr
	.global	_c_ftl_byte_pre_page
	.global	_c_ftl_nand_blks_per_die
	.global	_c_ftl_page_pre_slc_blk
	.global	_c_ftl_page_pre_blk
	.global	_c_ftl_blk_pre_plane
	.global	_c_ftl_nand_planes_num
	.global	_c_ftl_planes_per_die
	.global	_c_ftl_sec_per_page
	.global	_c_ftl_nand_die_num
	.global	_c_ftl_nand_type
	.global	zftl_debug
	.global	g_flash_blk_info
	.global	gp_flash_info
	.global	p_free_buf_head
	.global	free_buf_count
	.global	g_buf
	.global	nandc_ecc_sts
	.global	g_nandc_v6_master_info
	.global	nandc_randomizer_en
	.global	nandc_hw_seed
	.global	fill_spare_size
	.global	g_nandc_ecc_bits
	.global	g_nandc_tran_timeout
	.global	g_nandc_ver
	.global	gp_nandc
	.global	hy_f26_ref_value
	.global	sd15_tlc_rr
	.global	sd15_slc_rr
	.global	g_nand_para_info
	.global	gp_nand_para_info
	.global	g_nand_opt_para
	.global	g_msb_page_tbl
	.global	g_lsb_page_tbl
	.global	g_die_addr
	.global	g_die_cs_idx
	.global	IDByte
	.global	flash_read_retry
	.global	_c_ftl_cs_bits
	.global	g_maxRetryCount
	.global	g_maxRegNum
	.global	g_retryMode
	.global	g_flash_toggle_mode_en
	.global	g_flash_ymtc_3d_tlc_flag
	.global	g_flash_micron_3d_tlc_b16a
	.global	g_flash_micron_3d_tlc_b05a
	.global	g_flash_micron_3d_tlc_flag
	.global	g_flash_3d_mlc_flag
	.global	g_flash_3d_tlc_flag
	.global	g_flash_multi_page_prog_en
	.global	g_flash_multi_page_read_en
	.global	g_flash_interface_mode
	.global	g_idb_ecc_bits
	.global	g_idb_slc_mode_enable
	.global	g_one_pass_program
	.global	g_slc_mode_addr2
	.global	g_slc_mode_enable
	.global	g_flash_cur_mode
	.global	g_flash_six_addr
	.global	g_flash_slc_mode
	.global	g_slc_page_num
	.global	g_totle_phy_block
	.global	g_block_align_addr
	.global	g_flash_reversd_blks
	.global	g_nand_max_die
	.global	g_flash_tmp_spare_buffer
	.global	g_flash_tmp_page_buffer
	.global	g_flash_sys_spare_buffer
	.global	g_flash_spare_buffer
	.global	g_flash_page_buffer
	.section	.bss.IDByte,"aw",@nobits
	.align	2
	.set	.LANCHOR47,. + 0
	.type	IDByte, %object
	.size	IDByte, 32
IDByte:
	.zero	32
	.section	.bss._c_ftl_blk_pre_plane,"aw",@nobits
	.align	1
	.set	.LANCHOR8,. + 0
	.type	_c_ftl_blk_pre_plane, %object
	.size	_c_ftl_blk_pre_plane, 2
_c_ftl_blk_pre_plane:
	.zero	2
	.section	.bss._c_ftl_block_addr_log2,"aw",@nobits
	.align	1
	.set	.LANCHOR80,. + 0
	.type	_c_ftl_block_addr_log2, %object
	.size	_c_ftl_block_addr_log2, 2
_c_ftl_block_addr_log2:
	.zero	2
	.section	.bss._c_ftl_block_align_addr,"aw",@nobits
	.align	1
	.set	.LANCHOR117,. + 0
	.type	_c_ftl_block_align_addr, %object
	.size	_c_ftl_block_align_addr, 2
_c_ftl_block_align_addr:
	.zero	2
	.section	.bss._c_ftl_byte_pre_page,"aw",@nobits
	.align	1
	.set	.LANCHOR221,. + 0
	.type	_c_ftl_byte_pre_page, %object
	.size	_c_ftl_byte_pre_page, 2
_c_ftl_byte_pre_page:
	.zero	2
	.section	.bss._c_ftl_cs_bits,"aw",@nobits
	.set	.LANCHOR31,. + 0
	.type	_c_ftl_cs_bits, %object
	.size	_c_ftl_cs_bits, 1
_c_ftl_cs_bits:
	.zero	1
	.section	.bss._c_ftl_nand_blks_per_die,"aw",@nobits
	.align	1
	.type	_c_ftl_nand_blks_per_die, %object
	.size	_c_ftl_nand_blks_per_die, 2
_c_ftl_nand_blks_per_die:
	.zero	2
	.section	.bss._c_ftl_nand_die_num,"aw",@nobits
	.set	.LANCHOR118,. + 0
	.type	_c_ftl_nand_die_num, %object
	.size	_c_ftl_nand_die_num, 1
_c_ftl_nand_die_num:
	.zero	1
	.section	.bss._c_ftl_nand_planes_num,"aw",@nobits
	.set	.LANCHOR85,. + 0
	.type	_c_ftl_nand_planes_num, %object
	.size	_c_ftl_nand_planes_num, 1
_c_ftl_nand_planes_num:
	.zero	1
	.section	.bss._c_ftl_nand_type,"aw",@nobits
	.set	.LANCHOR84,. + 0
	.type	_c_ftl_nand_type, %object
	.size	_c_ftl_nand_type, 1
_c_ftl_nand_type:
	.zero	1
	.section	.bss._c_ftl_page_pre_blk,"aw",@nobits
	.align	1
	.set	.LANCHOR91,. + 0
	.type	_c_ftl_page_pre_blk, %object
	.size	_c_ftl_page_pre_blk, 2
_c_ftl_page_pre_blk:
	.zero	2
	.section	.bss._c_ftl_page_pre_slc_blk,"aw",@nobits
	.align	1
	.set	.LANCHOR100,. + 0
	.type	_c_ftl_page_pre_slc_blk, %object
	.size	_c_ftl_page_pre_slc_blk, 2
_c_ftl_page_pre_slc_blk:
	.zero	2
	.section	.bss._c_ftl_planes_per_die,"aw",@nobits
	.set	.LANCHOR81,. + 0
	.type	_c_ftl_planes_per_die, %object
	.size	_c_ftl_planes_per_die, 1
_c_ftl_planes_per_die:
	.zero	1
	.section	.bss._c_ftl_pm_page_num,"aw",@nobits
	.align	1
	.set	.LANCHOR203,. + 0
	.type	_c_ftl_pm_page_num, %object
	.size	_c_ftl_pm_page_num, 2
_c_ftl_pm_page_num:
	.zero	2
	.section	.bss._c_ftl_sec_per_page,"aw",@nobits
	.set	.LANCHOR68,. + 0
	.type	_c_ftl_sec_per_page, %object
	.size	_c_ftl_sec_per_page, 1
_c_ftl_sec_per_page:
	.zero	1
	.section	.bss._c_max_pm_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR153,. + 0
	.type	_c_max_pm_sblk, %object
	.size	_c_max_pm_sblk, 2
_c_max_pm_sblk:
	.zero	2
	.section	.bss._c_mix_max_slc_ec_count,"aw",@nobits
	.align	1
	.set	.LANCHOR132,. + 0
	.type	_c_mix_max_slc_ec_count, %object
	.size	_c_mix_max_slc_ec_count, 2
_c_mix_max_slc_ec_count:
	.zero	2
	.section	.bss._c_mix_max_xlc_ec_count,"aw",@nobits
	.align	1
	.set	.LANCHOR131,. + 0
	.type	_c_mix_max_xlc_ec_count, %object
	.size	_c_mix_max_xlc_ec_count, 2
_c_mix_max_xlc_ec_count:
	.zero	2
	.section	.bss._c_slc_to_xlc_ec_ratio,"aw",@nobits
	.align	1
	.set	.LANCHOR10,. + 0
	.type	_c_slc_to_xlc_ec_ratio, %object
	.size	_c_slc_to_xlc_ec_ratio, 2
_c_slc_to_xlc_ec_ratio:
	.zero	2
	.section	.bss._c_swl_slc_gc_th,"aw",@nobits
	.align	1
	.set	.LANCHOR150,. + 0
	.type	_c_swl_slc_gc_th, %object
	.size	_c_swl_slc_gc_th, 2
_c_swl_slc_gc_th:
	.zero	2
	.section	.bss._c_swl_xlc_gc_th,"aw",@nobits
	.align	1
	.set	.LANCHOR151,. + 0
	.type	_c_swl_xlc_gc_th, %object
	.size	_c_swl_xlc_gc_th, 2
_c_swl_xlc_gc_th:
	.zero	2
	.section	.bss._c_totle_data_density,"aw",@nobits
	.align	2
	.set	.LANCHOR228,. + 0
	.type	_c_totle_data_density, %object
	.size	_c_totle_data_density, 4
_c_totle_data_density:
	.zero	4
	.section	.bss._c_totle_log_page,"aw",@nobits
	.align	2
	.set	.LANCHOR219,. + 0
	.type	_c_totle_log_page, %object
	.size	_c_totle_log_page, 4
_c_totle_log_page:
	.zero	4
	.section	.bss._c_totle_phy_density,"aw",@nobits
	.align	2
	.set	.LANCHOR227,. + 0
	.type	_c_totle_phy_density, %object
	.size	_c_totle_phy_density, 4
_c_totle_phy_density:
	.zero	4
	.section	.bss._c_user_data_density,"aw",@nobits
	.align	2
	.set	.LANCHOR73,. + 0
	.type	_c_user_data_density, %object
	.size	_c_user_data_density, 4
_c_user_data_density:
	.zero	4
	.section	.bss._ftl_gc_tag_page_num,"aw",@nobits
	.set	.LANCHOR224,. + 0
	.type	_ftl_gc_tag_page_num, %object
	.size	_ftl_gc_tag_page_num, 1
_ftl_gc_tag_page_num:
	.zero	1
	.section	.bss._gc_after_discard_en,"aw",@nobits
	.align	2
	.set	.LANCHOR128,. + 0
	.type	_gc_after_discard_en, %object
	.size	_gc_after_discard_en, 4
_gc_after_discard_en:
	.zero	4
	.section	.bss._last_read_time,"aw",@nobits
	.align	2
	.type	_last_read_time, %object
	.size	_last_read_time, 4
_last_read_time:
	.zero	4
	.section	.bss._last_write_time,"aw",@nobits
	.align	2
	.type	_last_write_time, %object
	.size	_last_write_time, 4
_last_write_time:
	.zero	4
	.section	.bss._max_xlc_super_block,"aw",@nobits
	.align	1
	.set	.LANCHOR107,. + 0
	.type	_max_xlc_super_block, %object
	.size	_max_xlc_super_block, 2
_max_xlc_super_block:
	.zero	2
	.section	.bss._min_slc_super_block,"aw",@nobits
	.align	1
	.set	.LANCHOR104,. + 0
	.type	_min_slc_super_block, %object
	.size	_min_slc_super_block, 2
_min_slc_super_block:
	.zero	2
	.section	.bss.discard_sector_count,"aw",@nobits
	.align	2
	.set	.LANCHOR241,. + 0
	.type	discard_sector_count, %object
	.size	discard_sector_count, 4
discard_sector_count:
	.zero	4
	.section	.bss.fill_spare_size,"aw",@nobits
	.align	1
	.set	.LANCHOR53,. + 0
	.type	fill_spare_size, %object
	.size	fill_spare_size, 2
fill_spare_size:
	.zero	2
	.section	.bss.flash_ddr_tuning_sdr_read_count,"aw",@nobits
	.align	2
	.set	.LANCHOR170,. + 0
	.type	flash_ddr_tuning_sdr_read_count, %object
	.size	flash_ddr_tuning_sdr_read_count, 4
flash_ddr_tuning_sdr_read_count:
	.zero	4
	.section	.bss.flash_read_retry,"aw",@nobits
	.align	3
	.set	.LANCHOR172,. + 0
	.type	flash_read_retry, %object
	.size	flash_read_retry, 8
flash_read_retry:
	.zero	8
	.section	.bss.free_buf_count,"aw",@nobits
	.set	.LANCHOR57,. + 0
	.type	free_buf_count, %object
	.size	free_buf_count, 1
free_buf_count:
	.zero	1
	.section	.bss.free_mix_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR113,. + 0
	.type	free_mix_sblk, %object
	.size	free_mix_sblk, 2
free_mix_sblk:
	.zero	2
	.section	.bss.free_slc_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR109,. + 0
	.type	free_slc_sblk, %object
	.size	free_slc_sblk, 2
free_slc_sblk:
	.zero	2
	.section	.bss.free_xlc_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR111,. + 0
	.type	free_xlc_sblk, %object
	.size	free_xlc_sblk, 2
free_xlc_sblk:
	.zero	2
	.section	.bss.ftl_ext_info_data_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR199,. + 0
	.type	ftl_ext_info_data_buffer, %object
	.size	ftl_ext_info_data_buffer, 8
ftl_ext_info_data_buffer:
	.zero	8
	.section	.bss.ftl_ext_info_first_write,"aw",@nobits
	.set	.LANCHOR198,. + 0
	.type	ftl_ext_info_first_write, %object
	.size	ftl_ext_info_first_write, 1
ftl_ext_info_first_write:
	.zero	1
	.section	.bss.ftl_flush_jiffies,"aw",@nobits
	.align	2
	.set	.LANCHOR236,. + 0
	.type	ftl_flush_jiffies, %object
	.size	ftl_flush_jiffies, 4
ftl_flush_jiffies:
	.zero	4
	.section	.bss.ftl_info_data_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR194,. + 0
	.type	ftl_info_data_buffer, %object
	.size	ftl_info_data_buffer, 8
ftl_info_data_buffer:
	.zero	8
	.section	.bss.ftl_info_spare,"aw",@nobits
	.align	6
	.set	.LANCHOR192,. + 0
	.type	ftl_info_spare, %object
	.size	ftl_info_spare, 256
ftl_info_spare:
	.zero	256
	.section	.bss.ftl_low_format_cur_blk,"aw",@nobits
	.align	1
	.set	.LANCHOR74,. + 0
	.type	ftl_low_format_cur_blk, %object
	.size	ftl_low_format_cur_blk, 2
ftl_low_format_cur_blk:
	.zero	2
	.section	.bss.ftl_power_lost_flag,"aw",@nobits
	.set	.LANCHOR197,. + 0
	.type	ftl_power_lost_flag, %object
	.size	ftl_power_lost_flag, 1
ftl_power_lost_flag:
	.zero	1
	.section	.bss.ftl_sblk_lpa_tbl,"aw",@nobits
	.align	3
	.set	.LANCHOR123,. + 0
	.type	ftl_sblk_lpa_tbl, %object
	.size	ftl_sblk_lpa_tbl, 8
ftl_sblk_lpa_tbl:
	.zero	8
	.section	.bss.ftl_sblk_update_list,"aw",@nobits
	.align	3
	.set	.LANCHOR79,. + 0
	.type	ftl_sblk_update_list, %object
	.size	ftl_sblk_update_list, 16
ftl_sblk_update_list:
	.zero	16
	.section	.bss.ftl_sblk_update_list_offset,"aw",@nobits
	.align	1
	.set	.LANCHOR129,. + 0
	.type	ftl_sblk_update_list_offset, %object
	.size	ftl_sblk_update_list_offset, 2
ftl_sblk_update_list_offset:
	.zero	2
	.section	.bss.ftl_sblk_vpn,"aw",@nobits
	.align	3
	.set	.LANCHOR11,. + 0
	.type	ftl_sblk_vpn, %object
	.size	ftl_sblk_vpn, 8
ftl_sblk_vpn:
	.zero	8
	.section	.bss.ftl_sblk_vpn_update_id,"aw",@nobits
	.align	1
	.set	.LANCHOR78,. + 0
	.type	ftl_sblk_vpn_update_id, %object
	.size	ftl_sblk_vpn_update_id, 2
ftl_sblk_vpn_update_id:
	.zero	2
	.section	.bss.ftl_sys_info_first_write,"aw",@nobits
	.set	.LANCHOR196,. + 0
	.type	ftl_sys_info_first_write, %object
	.size	ftl_sys_info_first_write, 1
ftl_sys_info_first_write:
	.zero	1
	.section	.bss.ftl_tmp_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR189,. + 0
	.type	ftl_tmp_buffer, %object
	.size	ftl_tmp_buffer, 8
ftl_tmp_buffer:
	.zero	8
	.section	.bss.ftl_tmp_spare,"aw",@nobits
	.align	6
	.set	.LANCHOR190,. + 0
	.type	ftl_tmp_spare, %object
	.size	ftl_tmp_spare, 256
ftl_tmp_spare:
	.zero	256
	.section	.bss.ftl_vpn_update_count,"aw",@nobits
	.align	1
	.set	.LANCHOR127,. + 0
	.type	ftl_vpn_update_count, %object
	.size	ftl_vpn_update_count, 2
ftl_vpn_update_count:
	.zero	2
	.section	.bss.g_block_align_addr,"aw",@nobits
	.align	1
	.set	.LANCHOR2,. + 0
	.type	g_block_align_addr, %object
	.size	g_block_align_addr, 2
g_block_align_addr:
	.zero	2
	.section	.bss.g_buf,"aw",@nobits
	.align	3
	.set	.LANCHOR55,. + 0
	.type	g_buf, %object
	.size	g_buf, 1024
g_buf:
	.zero	1024
	.section	.bss.g_die_addr,"aw",@nobits
	.align	2
	.set	.LANCHOR146,. + 0
	.type	g_die_addr, %object
	.size	g_die_addr, 32
g_die_addr:
	.zero	32
	.section	.bss.g_die_cs_idx,"aw",@nobits
	.align	2
	.set	.LANCHOR29,. + 0
	.type	g_die_cs_idx, %object
	.size	g_die_cs_idx, 8
g_die_cs_idx:
	.zero	8
	.section	.bss.g_flash_3d_mlc_flag,"aw",@nobits
	.set	.LANCHOR86,. + 0
	.type	g_flash_3d_mlc_flag, %object
	.size	g_flash_3d_mlc_flag, 1
g_flash_3d_mlc_flag:
	.zero	1
	.section	.bss.g_flash_3d_tlc_flag,"aw",@nobits
	.set	.LANCHOR89,. + 0
	.type	g_flash_3d_tlc_flag, %object
	.size	g_flash_3d_tlc_flag, 1
g_flash_3d_tlc_flag:
	.zero	1
	.section	.bss.g_flash_blk_info,"aw",@nobits
	.align	3
	.set	.LANCHOR210,. + 0
	.type	g_flash_blk_info, %object
	.size	g_flash_blk_info, 4
g_flash_blk_info:
	.zero	4
	.section	.bss.g_flash_cur_mode,"aw",@nobits
	.align	3
	.set	.LANCHOR33,. + 0
	.type	g_flash_cur_mode, %object
	.size	g_flash_cur_mode, 4
g_flash_cur_mode:
	.zero	4
	.section	.bss.g_flash_interface_mode,"aw",@nobits
	.set	.LANCHOR48,. + 0
	.type	g_flash_interface_mode, %object
	.size	g_flash_interface_mode, 1
g_flash_interface_mode:
	.zero	1
	.section	.bss.g_flash_micron_3d_tlc_b05a,"aw",@nobits
	.set	.LANCHOR130,. + 0
	.type	g_flash_micron_3d_tlc_b05a, %object
	.size	g_flash_micron_3d_tlc_b05a, 1
g_flash_micron_3d_tlc_b05a:
	.zero	1
	.section	.bss.g_flash_micron_3d_tlc_b16a,"aw",@nobits
	.set	.LANCHOR216,. + 0
	.type	g_flash_micron_3d_tlc_b16a, %object
	.size	g_flash_micron_3d_tlc_b16a, 1
g_flash_micron_3d_tlc_b16a:
	.zero	1
	.section	.bss.g_flash_micron_3d_tlc_flag,"aw",@nobits
	.set	.LANCHOR35,. + 0
	.type	g_flash_micron_3d_tlc_flag, %object
	.size	g_flash_micron_3d_tlc_flag, 1
g_flash_micron_3d_tlc_flag:
	.zero	1
	.section	.bss.g_flash_multi_page_prog_en,"aw",@nobits
	.set	.LANCHOR44,. + 0
	.type	g_flash_multi_page_prog_en, %object
	.size	g_flash_multi_page_prog_en, 1
g_flash_multi_page_prog_en:
	.zero	1
	.section	.bss.g_flash_multi_page_read_en,"aw",@nobits
	.set	.LANCHOR185,. + 0
	.type	g_flash_multi_page_read_en, %object
	.size	g_flash_multi_page_read_en, 1
g_flash_multi_page_read_en:
	.zero	1
	.section	.bss.g_flash_page_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR174,. + 0
	.type	g_flash_page_buffer, %object
	.size	g_flash_page_buffer, 8
g_flash_page_buffer:
	.zero	8
	.section	.bss.g_flash_reversd_blks,"aw",@nobits
	.set	.LANCHOR215,. + 0
	.type	g_flash_reversd_blks, %object
	.size	g_flash_reversd_blks, 1
g_flash_reversd_blks:
	.zero	1
	.section	.bss.g_flash_six_addr,"aw",@nobits
	.set	.LANCHOR30,. + 0
	.type	g_flash_six_addr, %object
	.size	g_flash_six_addr, 1
g_flash_six_addr:
	.zero	1
	.section	.bss.g_flash_slc_mode,"aw",@nobits
	.set	.LANCHOR0,. + 0
	.type	g_flash_slc_mode, %object
	.size	g_flash_slc_mode, 1
g_flash_slc_mode:
	.zero	1
	.section	.bss.g_flash_spare_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR173,. + 0
	.type	g_flash_spare_buffer, %object
	.size	g_flash_spare_buffer, 8
g_flash_spare_buffer:
	.zero	8
	.section	.bss.g_flash_sys_spare_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR209,. + 0
	.type	g_flash_sys_spare_buffer, %object
	.size	g_flash_sys_spare_buffer, 8
g_flash_sys_spare_buffer:
	.zero	8
	.section	.bss.g_flash_tmp_page_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR164,. + 0
	.type	g_flash_tmp_page_buffer, %object
	.size	g_flash_tmp_page_buffer, 8
g_flash_tmp_page_buffer:
	.zero	8
	.section	.bss.g_flash_tmp_spare_buffer,"aw",@nobits
	.align	3
	.set	.LANCHOR166,. + 0
	.type	g_flash_tmp_spare_buffer, %object
	.size	g_flash_tmp_spare_buffer, 8
g_flash_tmp_spare_buffer:
	.zero	8
	.section	.bss.g_flash_toggle_mode_en,"aw",@nobits
	.set	.LANCHOR26,. + 0
	.type	g_flash_toggle_mode_en, %object
	.size	g_flash_toggle_mode_en, 1
g_flash_toggle_mode_en:
	.zero	1
	.section	.bss.g_flash_ymtc_3d_tlc_flag,"aw",@nobits
	.set	.LANCHOR36,. + 0
	.type	g_flash_ymtc_3d_tlc_flag, %object
	.size	g_flash_ymtc_3d_tlc_flag, 1
g_flash_ymtc_3d_tlc_flag:
	.zero	1
	.section	.bss.g_ftl_info_blk,"aw",@nobits
	.align	6
	.set	.LANCHOR193,. + 0
	.type	g_ftl_info_blk, %object
	.size	g_ftl_info_blk, 4
g_ftl_info_blk:
	.zero	4
	.section	.bss.g_gc_info,"aw",@nobits
	.align	3
	.set	.LANCHOR76,. + 0
	.type	g_gc_info, %object
	.size	g_gc_info, 2216
g_gc_info:
	.zero	2216
	.section	.bss.g_idb_ecc_bits,"aw",@nobits
	.set	.LANCHOR22,. + 0
	.type	g_idb_ecc_bits, %object
	.size	g_idb_ecc_bits, 1
g_idb_ecc_bits:
	.zero	1
	.section	.bss.g_idb_slc_mode_enable,"aw",@nobits
	.set	.LANCHOR24,. + 0
	.type	g_idb_slc_mode_enable, %object
	.size	g_idb_slc_mode_enable, 1
g_idb_slc_mode_enable:
	.zero	1
	.section	.bss.g_lsb_page_tbl,"aw",@nobits
	.align	2
	.set	.LANCHOR3,. + 0
	.type	g_lsb_page_tbl, %object
	.size	g_lsb_page_tbl, 1024
g_lsb_page_tbl:
	.zero	1024
	.section	.bss.g_maxRegNum,"aw",@nobits
	.set	.LANCHOR18,. + 0
	.type	g_maxRegNum, %object
	.size	g_maxRegNum, 1
g_maxRegNum:
	.zero	1
	.section	.bss.g_maxRetryCount,"aw",@nobits
	.set	.LANCHOR167,. + 0
	.type	g_maxRetryCount, %object
	.size	g_maxRetryCount, 1
g_maxRetryCount:
	.zero	1
	.section	.bss.g_msb_page_tbl,"aw",@nobits
	.align	2
	.set	.LANCHOR143,. + 0
	.type	g_msb_page_tbl, %object
	.size	g_msb_page_tbl, 2048
g_msb_page_tbl:
	.zero	2048
	.section	.bss.g_nand_max_die,"aw",@nobits
	.set	.LANCHOR23,. + 0
	.type	g_nand_max_die, %object
	.size	g_nand_max_die, 1
g_nand_max_die:
	.zero	1
	.section	.bss.g_nand_opt_para,"aw",@nobits
	.align	3
	.set	.LANCHOR25,. + 0
	.type	g_nand_opt_para, %object
	.size	g_nand_opt_para, 32
g_nand_opt_para:
	.zero	32
	.section	.bss.g_nandc_ecc_bits,"aw",@nobits
	.set	.LANCHOR49,. + 0
	.type	g_nandc_ecc_bits, %object
	.size	g_nandc_ecc_bits, 1
g_nandc_ecc_bits:
	.zero	1
	.section	.bss.g_nandc_tran_timeout,"aw",@nobits
	.set	.LANCHOR165,. + 0
	.type	g_nandc_tran_timeout, %object
	.size	g_nandc_tran_timeout, 1
g_nandc_tran_timeout:
	.zero	1
	.section	.bss.g_nandc_v6_master_info,"aw",@nobits
	.align	3
	.set	.LANCHOR52,. + 0
	.type	g_nandc_v6_master_info, %object
	.size	g_nandc_v6_master_info, 40
g_nandc_v6_master_info:
	.zero	40
	.section	.bss.g_nandc_ver,"aw",@nobits
	.set	.LANCHOR27,. + 0
	.type	g_nandc_ver, %object
	.size	g_nandc_ver, 1
g_nandc_ver:
	.zero	1
	.section	.bss.g_one_pass_program,"aw",@nobits
	.set	.LANCHOR87,. + 0
	.type	g_one_pass_program, %object
	.size	g_one_pass_program, 1
g_one_pass_program:
	.zero	1
	.section	.bss.g_pm_spare,"aw",@nobits
	.align	3
	.set	.LANCHOR206,. + 0
	.type	g_pm_spare, %object
	.size	g_pm_spare, 8
g_pm_spare:
	.zero	8
	.section	.bss.g_retryMode,"aw",@nobits
	.set	.LANCHOR16,. + 0
	.type	g_retryMode, %object
	.size	g_retryMode, 1
g_retryMode:
	.zero	1
	.section	.bss.g_slc_mode_addr2,"aw",@nobits
	.set	.LANCHOR1,. + 0
	.type	g_slc_mode_addr2, %object
	.size	g_slc_mode_addr2, 1
g_slc_mode_addr2:
	.zero	1
	.section	.bss.g_slc_mode_enable,"aw",@nobits
	.type	g_slc_mode_enable, %object
	.size	g_slc_mode_enable, 1
g_slc_mode_enable:
	.zero	1
	.section	.bss.g_slc_page_num,"aw",@nobits
	.align	1
	.set	.LANCHOR145,. + 0
	.type	g_slc_page_num, %object
	.size	g_slc_page_num, 2
g_slc_page_num:
	.zero	2
	.section	.bss.g_totle_phy_block,"aw",@nobits
	.align	1
	.set	.LANCHOR147,. + 0
	.type	g_totle_phy_block, %object
	.size	g_totle_phy_block, 2
g_totle_phy_block:
	.zero	2
	.section	.bss.gc_des_ppa_tbl,"aw",@nobits
	.align	3
	.set	.LANCHOR162,. + 0
	.type	gc_des_ppa_tbl, %object
	.size	gc_des_ppa_tbl, 8
gc_des_ppa_tbl:
	.zero	8
	.section	.bss.gc_free_slc_sblk_th,"aw",@nobits
	.align	1
	.set	.LANCHOR92,. + 0
	.type	gc_free_slc_sblk_th, %object
	.size	gc_free_slc_sblk_th, 2
gc_free_slc_sblk_th:
	.zero	2
	.section	.bss.gc_lpa_tbl,"aw",@nobits
	.align	3
	.set	.LANCHOR160,. + 0
	.type	gc_lpa_tbl, %object
	.size	gc_lpa_tbl, 8
gc_lpa_tbl:
	.zero	8
	.section	.bss.gc_mode,"aw",@nobits
	.set	.LANCHOR90,. + 0
	.type	gc_mode, %object
	.size	gc_mode, 1
gc_mode:
	.zero	1
	.section	.bss.gc_page_buf_id,"aw",@nobits
	.align	3
	.set	.LANCHOR88,. + 0
	.type	gc_page_buf_id, %object
	.size	gc_page_buf_id, 8
gc_page_buf_id:
	.zero	8
	.section	.bss.gc_pre_ppa_tbl,"aw",@nobits
	.align	3
	.set	.LANCHOR161,. + 0
	.type	gc_pre_ppa_tbl, %object
	.size	gc_pre_ppa_tbl, 8
gc_pre_ppa_tbl:
	.zero	8
	.section	.bss.gc_search_count,"aw",@nobits
	.align	2
	.set	.LANCHOR158,. + 0
	.type	gc_search_count, %object
	.size	gc_search_count, 4
gc_search_count:
	.zero	4
	.section	.bss.gc_slc_cache_index,"aw",@nobits
	.align	1
	.set	.LANCHOR94,. + 0
	.type	gc_slc_cache_index, %object
	.size	gc_slc_cache_index, 2
gc_slc_cache_index:
	.zero	2
	.section	.bss.gc_slc_data_index,"aw",@nobits
	.align	1
	.set	.LANCHOR93,. + 0
	.type	gc_slc_data_index, %object
	.size	gc_slc_data_index, 2
gc_slc_data_index:
	.zero	2
	.section	.bss.gc_slc_mode_slc_vpn_th,"aw",@nobits
	.align	1
	.set	.LANCHOR159,. + 0
	.type	gc_slc_mode_slc_vpn_th, %object
	.size	gc_slc_mode_slc_vpn_th, 2
gc_slc_mode_slc_vpn_th:
	.zero	2
	.section	.bss.gc_slc_mode_tlc_vpn_th,"aw",@nobits
	.align	1
	.set	.LANCHOR99,. + 0
	.type	gc_slc_mode_tlc_vpn_th, %object
	.size	gc_slc_mode_tlc_vpn_th, 2
gc_slc_mode_tlc_vpn_th:
	.zero	2
	.section	.bss.gc_slc_mode_vpn_th,"aw",@nobits
	.align	1
	.set	.LANCHOR75,. + 0
	.type	gc_slc_mode_vpn_th, %object
	.size	gc_slc_mode_vpn_th, 2
gc_slc_mode_vpn_th:
	.zero	2
	.section	.bss.gc_state,"aw",@nobits
	.set	.LANCHOR157,. + 0
	.type	gc_state, %object
	.size	gc_state, 1
gc_state:
	.zero	1
	.section	.bss.gc_tlc_mode_slc_vpn_th,"aw",@nobits
	.align	1
	.set	.LANCHOR108,. + 0
	.type	gc_tlc_mode_slc_vpn_th, %object
	.size	gc_tlc_mode_slc_vpn_th, 2
gc_tlc_mode_slc_vpn_th:
	.zero	2
	.section	.bss.gc_tlc_mode_tlc_vpn_th,"aw",@nobits
	.align	1
	.set	.LANCHOR106,. + 0
	.type	gc_tlc_mode_tlc_vpn_th, %object
	.size	gc_tlc_mode_tlc_vpn_th, 2
gc_tlc_mode_tlc_vpn_th:
	.zero	2
	.section	.bss.gc_valid_page_ppa,"aw",@nobits
	.align	3
	.set	.LANCHOR82,. + 0
	.type	gc_valid_page_ppa, %object
	.size	gc_valid_page_ppa, 8
gc_valid_page_ppa:
	.zero	8
	.section	.bss.gc_xlc_data_index,"aw",@nobits
	.align	1
	.set	.LANCHOR95,. + 0
	.type	gc_xlc_data_index, %object
	.size	gc_xlc_data_index, 2
gc_xlc_data_index:
	.zero	2
	.section	.bss.gc_xlc_search_index,"aw",@nobits
	.align	1
	.set	.LANCHOR102,. + 0
	.type	gc_xlc_search_index, %object
	.size	gc_xlc_search_index, 2
gc_xlc_search_index:
	.zero	2
	.section	.bss.gp_blk_info,"aw",@nobits
	.align	3
	.set	.LANCHOR9,. + 0
	.type	gp_blk_info, %object
	.size	gp_blk_info, 8
gp_blk_info:
	.zero	8
	.section	.bss.gp_data_slc_cache_head,"aw",@nobits
	.align	3
	.set	.LANCHOR96,. + 0
	.type	gp_data_slc_cache_head, %object
	.size	gp_data_slc_cache_head, 8
gp_data_slc_cache_head:
	.zero	8
	.section	.bss.gp_data_slc_data_head,"aw",@nobits
	.align	3
	.set	.LANCHOR101,. + 0
	.type	gp_data_slc_data_head, %object
	.size	gp_data_slc_data_head, 8
gp_data_slc_data_head:
	.zero	8
	.section	.bss.gp_data_xlc_data_head,"aw",@nobits
	.align	3
	.set	.LANCHOR98,. + 0
	.type	gp_data_xlc_data_head, %object
	.size	gp_data_xlc_data_head, 8
gp_data_xlc_data_head:
	.zero	8
	.section	.bss.gp_flash_check_buf,"aw",@nobits
	.align	3
	.set	.LANCHOR142,. + 0
	.type	gp_flash_check_buf, %object
	.size	gp_flash_check_buf, 8
gp_flash_check_buf:
	.zero	8
	.section	.bss.gp_flash_info,"aw",@nobits
	.align	3
	.set	.LANCHOR6,. + 0
	.type	gp_flash_info, %object
	.size	gp_flash_info, 8
gp_flash_info:
	.zero	8
	.section	.bss.gp_free_mix_head,"aw",@nobits
	.align	3
	.set	.LANCHOR114,. + 0
	.type	gp_free_mix_head, %object
	.size	gp_free_mix_head, 8
gp_free_mix_head:
	.zero	8
	.section	.bss.gp_free_slc_head,"aw",@nobits
	.align	3
	.set	.LANCHOR110,. + 0
	.type	gp_free_slc_head, %object
	.size	gp_free_slc_head, 8
gp_free_slc_head:
	.zero	8
	.section	.bss.gp_free_xlc_head,"aw",@nobits
	.align	3
	.set	.LANCHOR112,. + 0
	.type	gp_free_xlc_head, %object
	.size	gp_free_xlc_head, 8
gp_free_xlc_head:
	.zero	8
	.section	.bss.gp_ftl_ext_info,"aw",@nobits
	.align	3
	.set	.LANCHOR12,. + 0
	.type	gp_ftl_ext_info, %object
	.size	gp_ftl_ext_info, 8
gp_ftl_ext_info:
	.zero	8
	.section	.bss.gp_ftl_info,"aw",@nobits
	.align	3
	.set	.LANCHOR69,. + 0
	.type	gp_ftl_info, %object
	.size	gp_ftl_info, 8
gp_ftl_info:
	.zero	8
	.section	.bss.gp_nand_para_info,"aw",@nobits
	.align	3
	.set	.LANCHOR21,. + 0
	.type	gp_nand_para_info, %object
	.size	gp_nand_para_info, 8
gp_nand_para_info:
	.zero	8
	.section	.bss.gp_nandc,"aw",@nobits
	.align	3
	.set	.LANCHOR7,. + 0
	.type	gp_nandc, %object
	.size	gp_nandc, 8
gp_nandc:
	.zero	8
	.section	.bss.gp_sblk_list_tbl,"aw",@nobits
	.align	3
	.set	.LANCHOR4,. + 0
	.type	gp_sblk_list_tbl, %object
	.size	gp_sblk_list_tbl, 8
gp_sblk_list_tbl:
	.zero	8
	.section	.bss.idb_buf,"aw",@nobits
	.align	3
	.set	.LANCHOR139,. + 0
	.type	idb_buf, %object
	.size	idb_buf, 8
idb_buf:
	.zero	8
	.section	.bss.idb_last_lba,"aw",@nobits
	.align	2
	.set	.LANCHOR175,. + 0
	.type	idb_last_lba, %object
	.size	idb_last_lba, 4
idb_last_lba:
	.zero	4
	.section	.bss.idb_need_write_back,"aw",@nobits
	.align	2
	.set	.LANCHOR140,. + 0
	.type	idb_need_write_back, %object
	.size	idb_need_write_back, 4
idb_need_write_back:
	.zero	4
	.section	.bss.idb_write_enable,"aw",@nobits
	.set	.LANCHOR141,. + 0
	.type	idb_write_enable, %object
	.size	idb_write_enable, 1
idb_write_enable:
	.zero	1
	.section	.bss.lpa_hash,"aw",@nobits
	.align	3
	.set	.LANCHOR122,. + 0
	.type	lpa_hash, %object
	.size	lpa_hash, 512
lpa_hash:
	.zero	512
	.section	.bss.lpa_hash_index,"aw",@nobits
	.align	3
	.set	.LANCHOR124,. + 0
	.type	lpa_hash_index, %object
	.size	lpa_hash_index, 8
lpa_hash_index:
	.zero	8
	.section	.bss.nandc_ecc_sts,"aw",@nobits
	.align	3
	.type	nandc_ecc_sts, %object
	.size	nandc_ecc_sts, 16
nandc_ecc_sts:
	.zero	16
	.section	.bss.nandc_hw_seed,"aw",@nobits
	.set	.LANCHOR50,. + 0
	.type	nandc_hw_seed, %object
	.size	nandc_hw_seed, 1
nandc_hw_seed:
	.zero	1
	.section	.bss.nandc_randomizer_en,"aw",@nobits
	.set	.LANCHOR51,. + 0
	.type	nandc_randomizer_en, %object
	.size	nandc_randomizer_en, 1
nandc_randomizer_en:
	.zero	1
	.section	.bss.p_free_buf_head,"aw",@nobits
	.set	.LANCHOR56,. + 0
	.type	p_free_buf_head, %object
	.size	p_free_buf_head, 1
p_free_buf_head:
	.zero	1
	.section	.bss.p_read_ahead_ext_buf,"aw",@nobits
	.align	3
	.type	p_read_ahead_ext_buf, %object
	.size	p_read_ahead_ext_buf, 8
p_read_ahead_ext_buf:
	.zero	8
	.section	.bss.pm_first_write,"aw",@nobits
	.set	.LANCHOR207,. + 0
	.type	pm_first_write, %object
	.size	pm_first_write, 1
pm_first_write:
	.zero	1
	.section	.bss.pm_force_gc,"aw",@nobits
	.align	2
	.set	.LANCHOR149,. + 0
	.type	pm_force_gc, %object
	.size	pm_force_gc, 4
pm_force_gc:
	.zero	4
	.section	.bss.pm_gc_enable,"aw",@nobits
	.align	2
	.set	.LANCHOR134,. + 0
	.type	pm_gc_enable, %object
	.size	pm_gc_enable, 4
pm_gc_enable:
	.zero	4
	.section	.bss.pm_last_load_ram_id,"aw",@nobits
	.set	.LANCHOR223,. + 0
	.type	pm_last_load_ram_id, %object
	.size	pm_last_load_ram_id, 1
pm_last_load_ram_id:
	.zero	1
	.section	.bss.pm_last_update_ram_id,"aw",@nobits
	.set	.LANCHOR137,. + 0
	.type	pm_last_update_ram_id, %object
	.size	pm_last_update_ram_id, 1
pm_last_update_ram_id:
	.zero	1
	.section	.bss.pm_ram_info,"aw",@nobits
	.align	3
	.set	.LANCHOR136,. + 0
	.type	pm_ram_info, %object
	.size	pm_ram_info, 128
pm_ram_info:
	.zero	128
	.section	.bss.read_ahead_lpa,"aw",@nobits
	.align	2
	.set	.LANCHOR226,. + 0
	.type	read_ahead_lpa, %object
	.size	read_ahead_lpa, 4
read_ahead_lpa:
	.zero	4
	.section	.bss.read_buf_count,"aw",@nobits
	.set	.LANCHOR72,. + 0
	.type	read_buf_count, %object
	.size	read_buf_count, 1
read_buf_count:
	.zero	1
	.section	.bss.read_buf_head,"aw",@nobits
	.set	.LANCHOR71,. + 0
	.type	read_buf_head, %object
	.size	read_buf_head, 1
read_buf_head:
	.zero	1
	.section	.bss.sblk_gc_write_completed_queue_head,"aw",@nobits
	.set	.LANCHOR63,. + 0
	.type	sblk_gc_write_completed_queue_head, %object
	.size	sblk_gc_write_completed_queue_head, 1
sblk_gc_write_completed_queue_head:
	.zero	1
	.section	.bss.sblk_queue_head,"aw",@nobits
	.set	.LANCHOR59,. + 0
	.type	sblk_queue_head, %object
	.size	sblk_queue_head, 1
sblk_queue_head:
	.zero	1
	.section	.bss.sblk_read_completed_queue_head,"aw",@nobits
	.set	.LANCHOR62,. + 0
	.type	sblk_read_completed_queue_head, %object
	.size	sblk_read_completed_queue_head, 1
sblk_read_completed_queue_head:
	.zero	1
	.section	.bss.sblk_write_completed_queue_head,"aw",@nobits
	.set	.LANCHOR64,. + 0
	.type	sblk_write_completed_queue_head, %object
	.size	sblk_write_completed_queue_head, 1
sblk_write_completed_queue_head:
	.zero	1
	.section	.bss.slc_cache_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR105,. + 0
	.type	slc_cache_sblk, %object
	.size	slc_cache_sblk, 2
slc_cache_sblk:
	.zero	2
	.section	.bss.slc_data_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR103,. + 0
	.type	slc_data_sblk, %object
	.size	slc_data_sblk, 2
slc_data_sblk:
	.zero	2
	.section	.bss.write_buf_count,"aw",@nobits
	.set	.LANCHOR66,. + 0
	.type	write_buf_count, %object
	.size	write_buf_count, 1
write_buf_count:
	.zero	1
	.section	.bss.write_buf_head,"aw",@nobits
	.set	.LANCHOR65,. + 0
	.type	write_buf_head, %object
	.size	write_buf_head, 1
write_buf_head:
	.zero	1
	.section	.bss.write_commit_count,"aw",@nobits
	.set	.LANCHOR183,. + 0
	.type	write_commit_count, %object
	.size	write_commit_count, 1
write_commit_count:
	.zero	1
	.section	.bss.write_commit_head,"aw",@nobits
	.set	.LANCHOR184,. + 0
	.type	write_commit_head, %object
	.size	write_commit_head, 1
write_commit_head:
	.zero	1
	.section	.bss.xlc_data_sblk,"aw",@nobits
	.align	1
	.set	.LANCHOR97,. + 0
	.type	xlc_data_sblk, %object
	.size	xlc_data_sblk, 2
xlc_data_sblk:
	.zero	2
	.section	.bss.zftl_print_list_count,"aw",@nobits
	.align	1
	.set	.LANCHOR115,. + 0
	.type	zftl_print_list_count, %object
	.size	zftl_print_list_count, 2
zftl_print_list_count:
	.zero	2
	.section	.data.g_nand_para_info,"aw",@progbits
	.align	3
	.set	.LANCHOR32,. + 0
	.type	g_nand_para_info, %object
	.size	g_nand_para_info, 32
g_nand_para_info:
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	758
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	2
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.section	.data.hy_f26_ref_value,"aw",@progbits
	.align	3
	.set	.LANCHOR163,. + 0
	.type	hy_f26_ref_value, %object
	.size	hy_f26_ref_value, 28
hy_f26_ref_value:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	10
	.byte	6
	.byte	0
	.byte	-3
	.byte	-7
	.byte	-8
	.byte	0
	.byte	-6
	.byte	-13
	.byte	-15
	.byte	0
	.byte	-11
	.byte	-20
	.byte	-23
	.byte	0
	.byte	0
	.byte	-26
	.byte	-30
	.byte	0
	.byte	0
	.byte	-32
	.byte	-37
	.section	.data.nand_opt_para,"aw",@progbits
	.align	3
	.set	.LANCHOR214,. + 0
	.type	nand_opt_para, %object
	.size	nand_opt_para, 128
nand_opt_para:
	.byte	1
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	0
	.byte	50
	.byte	17
	.byte	-128
	.byte	112
	.byte	120
	.byte	120
	.byte	3
	.byte	1
	.byte	0
	.zero	14
	.byte	2
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	0
	.byte	0
	.byte	17
	.byte	-127
	.byte	112
	.byte	-15
	.byte	-14
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.byte	3
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	96
	.byte	96
	.byte	17
	.byte	-127
	.byte	112
	.byte	-15
	.byte	-14
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.byte	4
	.byte	0
	.byte	49
	.byte	63
	.byte	0
	.byte	49
	.byte	-128
	.byte	21
	.byte	96
	.byte	96
	.byte	17
	.byte	-127
	.byte	112
	.byte	112
	.byte	112
	.byte	0
	.byte	0
	.byte	0
	.zero	14
	.section	.data.sd15_slc_rr,"aw",@progbits
	.align	3
	.set	.LANCHOR40,. + 0
	.type	sd15_slc_rr, %object
	.size	sd15_slc_rr, 25
sd15_slc_rr:
	.byte	0
	.byte	8
	.byte	-8
	.byte	16
	.byte	-16
	.byte	24
	.byte	-24
	.byte	32
	.byte	-32
	.byte	32
	.byte	-40
	.byte	48
	.byte	-48
	.byte	56
	.byte	-56
	.byte	64
	.byte	-64
	.byte	72
	.byte	-72
	.byte	80
	.byte	-80
	.byte	88
	.byte	96
	.byte	104
	.byte	112
	.section	.data.sd15_tlc_rr,"aw",@progbits
	.align	3
	.set	.LANCHOR39,. + 0
	.type	sd15_tlc_rr, %object
	.size	sd15_tlc_rr, 329
sd15_tlc_rr:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	16
	.byte	8
	.byte	8
	.byte	0
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	0
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-32
	.byte	0
	.byte	8
	.byte	-8
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	0
	.byte	-16
	.byte	-24
	.byte	-16
	.byte	8
	.byte	8
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	0
	.byte	8
	.byte	8
	.byte	8
	.byte	8
	.byte	-8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	-16
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	0
	.byte	8
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-24
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-24
	.byte	-8
	.byte	8
	.byte	-8
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-8
	.byte	8
	.byte	-8
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-16
	.byte	8
	.byte	0
	.byte	8
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-16
	.byte	16
	.byte	0
	.byte	16
	.byte	0
	.byte	-8
	.byte	8
	.byte	0
	.byte	-24
	.byte	0
	.byte	-16
	.byte	-8
	.byte	-16
	.byte	-16
	.byte	-16
	.byte	-16
	.byte	0
	.byte	8
	.byte	-8
	.byte	-24
	.byte	0
	.byte	8
	.byte	8
	.byte	16
	.byte	16
	.byte	0
	.byte	8
	.byte	-8
	.byte	8
	.byte	16
	.byte	-8
	.byte	24
	.byte	0
	.byte	8
	.byte	-4
	.byte	0
	.byte	16
	.byte	8
	.byte	24
	.byte	8
	.byte	0
	.byte	-4
	.byte	-8
	.byte	24
	.byte	16
	.byte	16
	.byte	0
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	4
	.byte	0
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	8
	.byte	8
	.byte	16
	.byte	0
	.byte	16
	.byte	-4
	.byte	16
	.byte	0
	.byte	16
	.byte	8
	.byte	0
	.byte	16
	.byte	-4
	.byte	16
	.byte	-8
	.byte	0
	.byte	0
	.byte	-8
	.byte	16
	.byte	-4
	.byte	16
	.byte	-16
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	8
	.byte	-4
	.byte	8
	.byte	-24
	.byte	4
	.byte	-16
	.byte	0
	.byte	8
	.byte	0
	.byte	0
	.byte	-24
	.byte	8
	.byte	-16
	.byte	8
	.byte	0
	.byte	8
	.byte	-24
	.byte	-32
	.byte	16
	.byte	-24
	.byte	8
	.byte	-8
	.byte	8
	.byte	-24
	.byte	-32
	.byte	8
	.byte	0
	.byte	16
	.byte	0
	.byte	16
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	-8
	.byte	-16
	.byte	-8
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	8
	.byte	-24
	.byte	8
	.byte	0
	.byte	-32
	.byte	4
	.byte	0
	.byte	0
	.byte	-32
	.byte	-4
	.byte	0
	.byte	-24
	.byte	4
	.byte	0
	.byte	16
	.byte	-24
	.byte	16
	.byte	0
	.byte	-24
	.byte	-4
	.byte	0
	.byte	8
	.byte	-32
	.byte	8
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	-8
	.byte	0
	.byte	-8
	.byte	0
	.byte	0
	.byte	-4
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-8
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-16
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	-24
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-16
	.byte	0
	.byte	-16
	.byte	0
	.byte	0
	.byte	-24
	.byte	0
	.byte	-32
	.byte	0
	.byte	-32
	.byte	0
	.section	.data.tlc_b05a_prog_tbl,"aw",@progbits
	.align	3
	.set	.LANCHOR238,. + 0
	.type	tlc_b05a_prog_tbl, %object
	.size	tlc_b05a_prog_tbl, 1536
tlc_b05a_prog_tbl:
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	0
	.hword	9
	.hword	0
	.hword	11
	.hword	0
	.hword	13
	.hword	0
	.hword	15
	.hword	0
	.hword	17
	.hword	0
	.hword	19
	.hword	0
	.hword	21
	.hword	0
	.hword	23
	.hword	0
	.hword	25
	.hword	0
	.hword	27
	.hword	0
	.hword	29
	.hword	0
	.hword	31
	.hword	0
	.hword	33
	.hword	0
	.hword	35
	.hword	0
	.hword	37
	.hword	0
	.hword	39
	.hword	0
	.hword	41
	.hword	0
	.hword	43
	.hword	0
	.hword	45
	.hword	0
	.hword	47
	.hword	0
	.hword	49
	.hword	0
	.hword	51
	.hword	0
	.hword	53
	.hword	0
	.hword	55
	.hword	0
	.hword	25
	.hword	58
	.hword	0
	.hword	27
	.hword	61
	.hword	0
	.hword	29
	.hword	64
	.hword	0
	.hword	31
	.hword	67
	.hword	0
	.hword	33
	.hword	70
	.hword	0
	.hword	35
	.hword	73
	.hword	0
	.hword	37
	.hword	76
	.hword	0
	.hword	39
	.hword	79
	.hword	0
	.hword	41
	.hword	82
	.hword	0
	.hword	43
	.hword	85
	.hword	0
	.hword	45
	.hword	88
	.hword	0
	.hword	47
	.hword	91
	.hword	0
	.hword	49
	.hword	94
	.hword	0
	.hword	51
	.hword	97
	.hword	0
	.hword	53
	.hword	100
	.hword	0
	.hword	55
	.hword	103
	.hword	0
	.hword	58
	.hword	106
	.hword	0
	.hword	61
	.hword	109
	.hword	0
	.hword	64
	.hword	112
	.hword	0
	.hword	67
	.hword	115
	.hword	0
	.hword	70
	.hword	118
	.hword	0
	.hword	73
	.hword	121
	.hword	0
	.hword	76
	.hword	124
	.hword	0
	.hword	79
	.hword	127
	.hword	0
	.hword	82
	.hword	130
	.hword	0
	.hword	85
	.hword	133
	.hword	0
	.hword	88
	.hword	136
	.hword	0
	.hword	91
	.hword	139
	.hword	0
	.hword	94
	.hword	142
	.hword	0
	.hword	97
	.hword	145
	.hword	0
	.hword	100
	.hword	148
	.hword	0
	.hword	103
	.hword	151
	.hword	0
	.hword	106
	.hword	154
	.hword	0
	.hword	109
	.hword	157
	.hword	0
	.hword	112
	.hword	160
	.hword	0
	.hword	115
	.hword	163
	.hword	0
	.hword	118
	.hword	166
	.hword	0
	.hword	121
	.hword	169
	.hword	0
	.hword	124
	.hword	172
	.hword	0
	.hword	127
	.hword	175
	.hword	0
	.hword	130
	.hword	178
	.hword	0
	.hword	133
	.hword	181
	.hword	0
	.hword	136
	.hword	184
	.hword	0
	.hword	139
	.hword	187
	.hword	0
	.hword	142
	.hword	190
	.hword	0
	.hword	145
	.hword	193
	.hword	0
	.hword	148
	.hword	196
	.hword	0
	.hword	151
	.hword	199
	.hword	0
	.hword	154
	.hword	202
	.hword	0
	.hword	157
	.hword	205
	.hword	0
	.hword	160
	.hword	208
	.hword	0
	.hword	163
	.hword	211
	.hword	0
	.hword	166
	.hword	214
	.hword	0
	.hword	169
	.hword	217
	.hword	0
	.hword	172
	.hword	220
	.hword	0
	.hword	175
	.hword	223
	.hword	0
	.hword	178
	.hword	226
	.hword	0
	.hword	181
	.hword	229
	.hword	0
	.hword	184
	.hword	232
	.hword	0
	.hword	187
	.hword	235
	.hword	0
	.hword	190
	.hword	238
	.hword	0
	.hword	193
	.hword	241
	.hword	0
	.hword	196
	.hword	244
	.hword	0
	.hword	199
	.hword	247
	.hword	0
	.hword	202
	.hword	250
	.hword	0
	.hword	205
	.hword	253
	.hword	0
	.hword	208
	.hword	256
	.hword	0
	.hword	211
	.hword	259
	.hword	0
	.hword	214
	.hword	262
	.hword	0
	.hword	217
	.hword	265
	.hword	0
	.hword	220
	.hword	268
	.hword	0
	.hword	223
	.hword	271
	.hword	0
	.hword	226
	.hword	274
	.hword	0
	.hword	229
	.hword	277
	.hword	0
	.hword	232
	.hword	280
	.hword	0
	.hword	235
	.hword	283
	.hword	0
	.hword	238
	.hword	286
	.hword	0
	.hword	241
	.hword	289
	.hword	0
	.hword	244
	.hword	292
	.hword	0
	.hword	247
	.hword	295
	.hword	0
	.hword	250
	.hword	298
	.hword	0
	.hword	253
	.hword	301
	.hword	0
	.hword	256
	.hword	304
	.hword	0
	.hword	259
	.hword	307
	.hword	0
	.hword	262
	.hword	310
	.hword	0
	.hword	265
	.hword	313
	.hword	0
	.hword	268
	.hword	316
	.hword	0
	.hword	271
	.hword	319
	.hword	0
	.hword	274
	.hword	322
	.hword	0
	.hword	277
	.hword	325
	.hword	0
	.hword	280
	.hword	328
	.hword	0
	.hword	283
	.hword	331
	.hword	0
	.hword	286
	.hword	334
	.hword	0
	.hword	289
	.hword	337
	.hword	0
	.hword	292
	.hword	340
	.hword	0
	.hword	295
	.hword	343
	.hword	0
	.hword	298
	.hword	346
	.hword	0
	.hword	301
	.hword	349
	.hword	0
	.hword	304
	.hword	352
	.hword	0
	.hword	307
	.hword	355
	.hword	0
	.hword	310
	.hword	358
	.hword	0
	.hword	313
	.hword	361
	.hword	0
	.hword	316
	.hword	364
	.hword	0
	.hword	319
	.hword	367
	.hword	0
	.hword	322
	.hword	370
	.hword	0
	.hword	325
	.hword	373
	.hword	0
	.hword	328
	.hword	376
	.hword	0
	.hword	331
	.hword	379
	.hword	0
	.hword	334
	.hword	382
	.hword	0
	.hword	337
	.hword	385
	.hword	0
	.hword	340
	.hword	388
	.hword	0
	.hword	343
	.hword	391
	.hword	0
	.hword	346
	.hword	394
	.hword	0
	.hword	349
	.hword	397
	.hword	0
	.hword	352
	.hword	400
	.hword	0
	.hword	355
	.hword	403
	.hword	0
	.hword	358
	.hword	406
	.hword	0
	.hword	361
	.hword	409
	.hword	0
	.hword	364
	.hword	412
	.hword	0
	.hword	367
	.hword	415
	.hword	0
	.hword	370
	.hword	418
	.hword	0
	.hword	373
	.hword	421
	.hword	0
	.hword	376
	.hword	424
	.hword	0
	.hword	379
	.hword	427
	.hword	0
	.hword	382
	.hword	430
	.hword	0
	.hword	385
	.hword	433
	.hword	0
	.hword	388
	.hword	436
	.hword	0
	.hword	391
	.hword	439
	.hword	0
	.hword	394
	.hword	442
	.hword	0
	.hword	397
	.hword	445
	.hword	0
	.hword	400
	.hword	448
	.hword	0
	.hword	403
	.hword	451
	.hword	0
	.hword	406
	.hword	454
	.hword	0
	.hword	409
	.hword	457
	.hword	0
	.hword	412
	.hword	460
	.hword	0
	.hword	415
	.hword	463
	.hword	0
	.hword	418
	.hword	466
	.hword	0
	.hword	421
	.hword	469
	.hword	0
	.hword	424
	.hword	472
	.hword	0
	.hword	427
	.hword	475
	.hword	0
	.hword	430
	.hword	478
	.hword	0
	.hword	433
	.hword	481
	.hword	0
	.hword	436
	.hword	484
	.hword	0
	.hword	439
	.hword	487
	.hword	0
	.hword	442
	.hword	490
	.hword	0
	.hword	445
	.hword	493
	.hword	0
	.hword	448
	.hword	496
	.hword	0
	.hword	451
	.hword	499
	.hword	0
	.hword	454
	.hword	502
	.hword	0
	.hword	457
	.hword	505
	.hword	0
	.hword	460
	.hword	508
	.hword	0
	.hword	463
	.hword	511
	.hword	0
	.hword	466
	.hword	514
	.hword	0
	.hword	469
	.hword	517
	.hword	0
	.hword	472
	.hword	520
	.hword	0
	.hword	475
	.hword	523
	.hword	0
	.hword	478
	.hword	526
	.hword	0
	.hword	481
	.hword	529
	.hword	0
	.hword	484
	.hword	532
	.hword	0
	.hword	487
	.hword	535
	.hword	0
	.hword	490
	.hword	538
	.hword	0
	.hword	493
	.hword	541
	.hword	0
	.hword	496
	.hword	544
	.hword	0
	.hword	499
	.hword	547
	.hword	0
	.hword	502
	.hword	550
	.hword	0
	.hword	505
	.hword	553
	.hword	0
	.hword	508
	.hword	556
	.hword	0
	.hword	511
	.hword	559
	.hword	0
	.hword	514
	.hword	562
	.hword	0
	.hword	517
	.hword	565
	.hword	0
	.hword	520
	.hword	568
	.hword	0
	.hword	523
	.hword	571
	.hword	0
	.hword	526
	.hword	574
	.hword	0
	.hword	529
	.hword	577
	.hword	0
	.hword	532
	.hword	580
	.hword	0
	.hword	535
	.hword	583
	.hword	0
	.hword	538
	.hword	586
	.hword	0
	.hword	541
	.hword	589
	.hword	0
	.hword	544
	.hword	592
	.hword	0
	.hword	547
	.hword	595
	.hword	0
	.hword	550
	.hword	598
	.hword	0
	.hword	553
	.hword	601
	.hword	0
	.hword	556
	.hword	604
	.hword	0
	.hword	559
	.hword	607
	.hword	0
	.hword	562
	.hword	610
	.hword	0
	.hword	565
	.hword	613
	.hword	0
	.hword	568
	.hword	616
	.hword	0
	.hword	571
	.hword	619
	.hword	0
	.hword	574
	.hword	622
	.hword	0
	.hword	577
	.hword	625
	.hword	0
	.hword	580
	.hword	628
	.hword	0
	.hword	583
	.hword	631
	.hword	0
	.hword	586
	.hword	634
	.hword	0
	.hword	589
	.hword	637
	.hword	0
	.hword	592
	.hword	640
	.hword	0
	.hword	595
	.hword	643
	.hword	0
	.hword	598
	.hword	646
	.hword	0
	.hword	601
	.hword	649
	.hword	0
	.hword	604
	.hword	652
	.hword	0
	.hword	607
	.hword	655
	.hword	0
	.hword	610
	.hword	658
	.hword	0
	.hword	613
	.hword	661
	.hword	0
	.hword	616
	.hword	664
	.hword	0
	.hword	619
	.hword	667
	.hword	0
	.hword	622
	.hword	670
	.hword	0
	.hword	625
	.hword	673
	.hword	0
	.hword	628
	.hword	676
	.hword	0
	.hword	631
	.hword	679
	.hword	0
	.hword	634
	.hword	682
	.hword	0
	.hword	637
	.hword	685
	.hword	0
	.hword	640
	.hword	688
	.hword	0
	.hword	643
	.hword	691
	.hword	0
	.hword	646
	.hword	694
	.hword	0
	.hword	649
	.hword	697
	.hword	0
	.hword	652
	.hword	700
	.hword	0
	.hword	655
	.hword	703
	.hword	0
	.hword	658
	.hword	706
	.hword	0
	.hword	661
	.hword	709
	.hword	0
	.hword	664
	.hword	712
	.hword	0
	.hword	667
	.hword	715
	.hword	0
	.hword	670
	.hword	718
	.hword	0
	.hword	673
	.hword	721
	.hword	0
	.hword	676
	.hword	724
	.hword	0
	.hword	679
	.hword	727
	.hword	0
	.hword	682
	.hword	730
	.hword	0
	.hword	685
	.hword	733
	.hword	0
	.hword	688
	.hword	736
	.hword	0
	.hword	691
	.hword	739
	.hword	0
	.hword	694
	.hword	742
	.hword	0
	.hword	697
	.hword	745
	.hword	0
	.hword	700
	.hword	748
	.hword	0
	.hword	703
	.hword	751
	.hword	0
	.hword	706
	.hword	0
	.hword	709
	.hword	0
	.hword	712
	.hword	0
	.hword	715
	.hword	0
	.hword	718
	.hword	0
	.hword	721
	.hword	0
	.hword	724
	.hword	0
	.hword	727
	.hword	0
	.section	.data.tlc_prog_order,"aw",@progbits
	.align	3
	.set	.LANCHOR239,. + 0
	.type	tlc_prog_order, %object
	.size	tlc_prog_order, 768
tlc_prog_order:
	.hword	1
	.hword	9
	.hword	2
	.hword	17
	.hword	10
	.hword	3
	.hword	25
	.hword	18
	.hword	11
	.hword	33
	.hword	26
	.hword	19
	.hword	41
	.hword	34
	.hword	27
	.hword	49
	.hword	42
	.hword	35
	.hword	57
	.hword	50
	.hword	43
	.hword	65
	.hword	58
	.hword	51
	.hword	73
	.hword	66
	.hword	59
	.hword	81
	.hword	74
	.hword	67
	.hword	89
	.hword	82
	.hword	75
	.hword	97
	.hword	90
	.hword	83
	.hword	105
	.hword	98
	.hword	91
	.hword	113
	.hword	106
	.hword	99
	.hword	121
	.hword	114
	.hword	107
	.hword	129
	.hword	122
	.hword	115
	.hword	137
	.hword	130
	.hword	123
	.hword	145
	.hword	138
	.hword	131
	.hword	153
	.hword	146
	.hword	139
	.hword	161
	.hword	154
	.hword	147
	.hword	169
	.hword	162
	.hword	155
	.hword	177
	.hword	170
	.hword	163
	.hword	185
	.hword	178
	.hword	171
	.hword	193
	.hword	186
	.hword	179
	.hword	201
	.hword	194
	.hword	187
	.hword	209
	.hword	202
	.hword	195
	.hword	217
	.hword	210
	.hword	203
	.hword	225
	.hword	218
	.hword	211
	.hword	233
	.hword	226
	.hword	219
	.hword	241
	.hword	234
	.hword	227
	.hword	249
	.hword	242
	.hword	235
	.hword	257
	.hword	250
	.hword	243
	.hword	265
	.hword	258
	.hword	251
	.hword	273
	.hword	266
	.hword	259
	.hword	281
	.hword	274
	.hword	267
	.hword	289
	.hword	282
	.hword	275
	.hword	297
	.hword	290
	.hword	283
	.hword	305
	.hword	298
	.hword	291
	.hword	313
	.hword	306
	.hword	299
	.hword	321
	.hword	314
	.hword	307
	.hword	329
	.hword	322
	.hword	315
	.hword	337
	.hword	330
	.hword	323
	.hword	345
	.hword	338
	.hword	331
	.hword	353
	.hword	346
	.hword	339
	.hword	361
	.hword	354
	.hword	347
	.hword	369
	.hword	362
	.hword	355
	.hword	377
	.hword	370
	.hword	363
	.hword	385
	.hword	378
	.hword	371
	.hword	393
	.hword	386
	.hword	379
	.hword	401
	.hword	394
	.hword	387
	.hword	409
	.hword	402
	.hword	395
	.hword	417
	.hword	410
	.hword	403
	.hword	425
	.hword	418
	.hword	411
	.hword	433
	.hword	426
	.hword	419
	.hword	441
	.hword	434
	.hword	427
	.hword	449
	.hword	442
	.hword	435
	.hword	457
	.hword	450
	.hword	443
	.hword	465
	.hword	458
	.hword	451
	.hword	473
	.hword	466
	.hword	459
	.hword	481
	.hword	474
	.hword	467
	.hword	489
	.hword	482
	.hword	475
	.hword	497
	.hword	490
	.hword	483
	.hword	505
	.hword	498
	.hword	491
	.hword	513
	.hword	506
	.hword	499
	.hword	521
	.hword	514
	.hword	507
	.hword	529
	.hword	522
	.hword	515
	.hword	537
	.hword	530
	.hword	523
	.hword	545
	.hword	538
	.hword	531
	.hword	553
	.hword	546
	.hword	539
	.hword	561
	.hword	554
	.hword	547
	.hword	569
	.hword	562
	.hword	555
	.hword	577
	.hword	570
	.hword	563
	.hword	585
	.hword	578
	.hword	571
	.hword	593
	.hword	586
	.hword	579
	.hword	601
	.hword	594
	.hword	587
	.hword	609
	.hword	602
	.hword	595
	.hword	617
	.hword	610
	.hword	603
	.hword	625
	.hword	618
	.hword	611
	.hword	633
	.hword	626
	.hword	619
	.hword	641
	.hword	634
	.hword	627
	.hword	649
	.hword	642
	.hword	635
	.hword	657
	.hword	650
	.hword	643
	.hword	665
	.hword	658
	.hword	651
	.hword	673
	.hword	666
	.hword	659
	.hword	681
	.hword	674
	.hword	667
	.hword	689
	.hword	682
	.hword	675
	.hword	697
	.hword	690
	.hword	683
	.hword	705
	.hword	698
	.hword	691
	.hword	713
	.hword	706
	.hword	699
	.hword	721
	.hword	714
	.hword	707
	.hword	729
	.hword	722
	.hword	715
	.hword	737
	.hword	730
	.hword	723
	.hword	745
	.hword	738
	.hword	731
	.hword	753
	.hword	746
	.hword	739
	.hword	761
	.hword	754
	.hword	747
	.hword	769
	.hword	762
	.hword	755
	.hword	777
	.hword	770
	.hword	763
	.hword	785
	.hword	778
	.hword	771
	.hword	793
	.hword	786
	.hword	779
	.hword	801
	.hword	794
	.hword	787
	.hword	809
	.hword	802
	.hword	795
	.hword	817
	.hword	810
	.hword	803
	.hword	825
	.hword	818
	.hword	811
	.hword	833
	.hword	826
	.hword	819
	.hword	841
	.hword	834
	.hword	827
	.hword	849
	.hword	842
	.hword	835
	.hword	857
	.hword	850
	.hword	843
	.hword	865
	.hword	858
	.hword	851
	.hword	873
	.hword	866
	.hword	859
	.hword	881
	.hword	874
	.hword	867
	.hword	889
	.hword	882
	.hword	875
	.hword	897
	.hword	890
	.hword	883
	.hword	905
	.hword	898
	.hword	891
	.hword	913
	.hword	906
	.hword	899
	.hword	921
	.hword	914
	.hword	907
	.hword	929
	.hword	922
	.hword	915
	.hword	937
	.hword	930
	.hword	923
	.hword	945
	.hword	938
	.hword	931
	.hword	953
	.hword	946
	.hword	939
	.hword	961
	.hword	954
	.hword	947
	.hword	969
	.hword	962
	.hword	955
	.hword	977
	.hword	970
	.hword	963
	.hword	985
	.hword	978
	.hword	971
	.hword	993
	.hword	986
	.hword	979
	.hword	1001
	.hword	994
	.hword	987
	.hword	1009
	.hword	1002
	.hword	995
	.hword	1017
	.hword	1010
	.hword	1003
	.hword	1018
	.hword	1011
	.hword	1019
	.section	.data.zftl_debug,"aw",@progbits
	.align	2
	.set	.LANCHOR19,. + 0
	.type	zftl_debug, %object
	.size	zftl_debug, 4
zftl_debug:
	.word	17476
	.section	.data.zftl_nand_flash_para_tbl,"aw",@progbits
	.align	3
	.set	.LANCHOR213,. + 0
	.type	zftl_nand_flash_para_tbl, %object
	.size	zftl_nand_flash_para_tbl, 1568
zftl_nand_flash_para_tbl:
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	758
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	60
	.byte	-104
	.byte	-77
	.byte	118
	.byte	114
	.byte	1
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	2
	.hword	1478
	.hword	5593
	.byte	0
	.byte	37
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	58
	.byte	-104
	.byte	-93
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	384
	.byte	3
	.byte	2
	.hword	1446
	.hword	1497
	.byte	0
	.byte	36
	.byte	60
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	2092
	.hword	17857
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	58
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2106
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	81
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1056
	.hword	17857
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	80
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	34
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	80
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	17881
	.byte	2
	.byte	34
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	87
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1058
	.hword	17881
	.byte	2
	.byte	33
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	-104
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	-47
	.byte	1
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	35
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	58
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2106
	.hword	17881
	.byte	2
	.byte	68
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	81
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1074
	.hword	17881
	.byte	2
	.byte	68
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	87
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1058
	.hword	17881
	.byte	2
	.byte	66
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	4
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-34
	.byte	-108
	.byte	-109
	.byte	118
	.byte	80
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	17881
	.byte	2
	.byte	67
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	6
	.byte	69
	.byte	-41
	.byte	-124
	.byte	-109
	.byte	114
	.byte	87
	.byte	8
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	1060
	.hword	17857
	.byte	2
	.byte	66
	.byte	40
	.byte	32
	.byte	2
	.byte	1
	.byte	1
	.byte	0
	.hword	256
	.byte	1
	.byte	-94
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	68
	.byte	50
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1048
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	86
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	24
	.hword	512
	.byte	2
	.byte	2
	.hword	700
	.hword	479
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	68
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1064
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	84
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	1
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	84
	.byte	-92
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1024
	.hword	455
	.byte	4
	.byte	18
	.byte	60
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	4
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	52
	.byte	-92
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	100
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1044
	.hword	471
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	50
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	-60
	.byte	52
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	68
	.byte	52
	.byte	-86
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	2184
	.hword	9671
	.byte	5
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	512
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	6
	.byte	-101
	.byte	73
	.byte	1
	.byte	0
	.byte	-101
	.byte	73
	.byte	9
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	1
	.hword	2144
	.hword	-23097
	.byte	8
	.byte	21
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	8
	.byte	0
	.hword	256
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	44
	.byte	-124
	.byte	100
	.byte	60
	.byte	-87
	.byte	4
	.byte	4
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	479
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	0
	.byte	0
	.byte	0
	.byte	1
	.byte	5
	.byte	44
	.byte	-124
	.byte	88
	.byte	50
	.byte	-95
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	768
	.byte	3
	.byte	1
	.hword	1440
	.hword	3527
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	1024
	.byte	3
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	44
	.byte	-92
	.byte	8
	.byte	50
	.byte	-95
	.byte	0
	.byte	4
	.byte	1
	.byte	32
	.hword	2304
	.byte	3
	.byte	1
	.hword	1008
	.hword	3521
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	4096
	.byte	3
	.byte	0
	.byte	0
	.byte	4
	.byte	6
	.byte	44
	.byte	-92
	.byte	100
	.byte	50
	.byte	-86
	.byte	4
	.byte	4
	.byte	1
	.byte	32
	.hword	1024
	.byte	2
	.byte	1
	.hword	2192
	.hword	9671
	.byte	10
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	1024
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.byte	6
	.byte	-101
	.byte	-61
	.byte	72
	.byte	37
	.byte	16
	.byte	0
	.byte	9
	.byte	1
	.byte	32
	.hword	1152
	.byte	3
	.byte	2
	.hword	1006
	.hword	-27169
	.byte	13
	.byte	81
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	4
	.byte	0
	.hword	2048
	.byte	1
	.byte	-38
	.byte	-33
	.byte	24
	.byte	6
	.byte	-83
	.byte	-34
	.byte	20
	.byte	-85
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1056
	.hword	455
	.byte	2
	.byte	6
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	2
	.byte	-65
	.byte	-66
	.byte	0
	.byte	6
	.byte	-83
	.byte	-34
	.byte	-108
	.byte	-21
	.byte	116
	.byte	68
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1066
	.hword	473
	.byte	1
	.byte	7
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	-34
	.byte	20
	.byte	-89
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	1060
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	2
	.byte	-65
	.byte	-66
	.byte	0
	.byte	6
	.byte	-83
	.byte	-41
	.byte	-108
	.byte	-111
	.byte	96
	.byte	68
	.byte	2
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1046
	.hword	473
	.byte	1
	.byte	3
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	58
	.byte	20
	.byte	-85
	.byte	66
	.byte	74
	.byte	2
	.byte	1
	.byte	32
	.hword	256
	.byte	2
	.byte	2
	.hword	2092
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	-41
	.byte	20
	.byte	-98
	.byte	52
	.byte	74
	.byte	2
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	2
	.hword	1056
	.hword	473
	.byte	2
	.byte	5
	.byte	40
	.byte	32
	.byte	4
	.byte	1
	.byte	3
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-83
	.byte	58
	.byte	20
	.byte	3
	.byte	8
	.byte	80
	.byte	2
	.byte	1
	.byte	32
	.hword	388
	.byte	2
	.byte	2
	.hword	1362
	.hword	473
	.byte	9
	.byte	8
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	3
	.byte	0
	.hword	512
	.byte	0
	.byte	-65
	.byte	-66
	.byte	1
	.byte	5
	.byte	-119
	.byte	100
	.byte	100
	.byte	60
	.byte	-95
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	1
	.hword	1024
	.hword	455
	.byte	4
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	-119
	.byte	-124
	.byte	100
	.byte	60
	.byte	-91
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	512
	.byte	2
	.byte	2
	.hword	1024
	.hword	455
	.byte	4
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	512
	.byte	3
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	100
	.byte	68
	.byte	75
	.byte	-87
	.byte	0
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-120
	.byte	36
	.byte	75
	.byte	-87
	.byte	-124
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	3
	.byte	17
	.byte	40
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-120
	.byte	4
	.byte	75
	.byte	-87
	.byte	0
	.byte	7
	.byte	1
	.byte	16
	.hword	256
	.byte	2
	.byte	4
	.hword	1024
	.hword	449
	.byte	1
	.byte	0
	.byte	24
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	256
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	6
	.byte	-119
	.byte	-92
	.byte	8
	.byte	50
	.byte	-95
	.byte	0
	.byte	7
	.byte	1
	.byte	32
	.hword	2304
	.byte	3
	.byte	1
	.hword	1008
	.hword	3521
	.byte	0
	.byte	19
	.byte	70
	.byte	32
	.byte	1
	.byte	0
	.byte	1
	.byte	0
	.hword	4096
	.byte	3
	.byte	0
	.byte	0
	.byte	4
	.byte	6
	.byte	-20
	.byte	-34
	.byte	-108
	.byte	-61
	.byte	-92
	.byte	-54
	.byte	0
	.byte	1
	.byte	32
	.hword	792
	.byte	2
	.byte	1
	.hword	688
	.hword	1217
	.byte	11
	.byte	50
	.byte	40
	.byte	32
	.byte	3
	.byte	1
	.byte	1
	.byte	0
	.hword	1024
	.byte	1
	.byte	-38
	.byte	-33
	.byte	0
	.section	.rodata.__func__.7123,"a",@progbits
	.align	3
	.set	.LANCHOR171,. + 0
	.type	__func__.7123, %object
	.size	__func__.7123, 19
__func__.7123:
	.string	"flash_read_page_en"
	.section	.rodata.__func__.7184,"a",@progbits
	.align	3
	.set	.LANCHOR188,. + 0
	.type	__func__.7184, %object
	.size	__func__.7184, 19
__func__.7184:
	.string	"flash_prog_page_en"
	.section	.rodata.__func__.7200,"a",@progbits
	.align	3
	.set	.LANCHOR43,. + 0
	.type	__func__.7200, %object
	.size	__func__.7200, 26
__func__.7200:
	.string	"flash_erase_duplane_block"
	.section	.rodata.__func__.7211,"a",@progbits
	.align	3
	.set	.LANCHOR45,. + 0
	.type	__func__.7211, %object
	.size	__func__.7211, 21
__func__.7211:
	.string	"flash_erase_block_en"
	.section	.rodata.__func__.7225,"a",@progbits
	.align	3
	.set	.LANCHOR28,. + 0
	.type	__func__.7225, %object
	.size	__func__.7225, 28
__func__.7225:
	.string	"flash_wait_device_ready_raw"
	.section	.rodata.__func__.7249,"a",@progbits
	.align	3
	.set	.LANCHOR176,. + 0
	.type	__func__.7249, %object
	.size	__func__.7249, 26
__func__.7249:
	.string	"flash_start_tlc_page_prog"
	.section	.rodata.__func__.7260,"a",@progbits
	.align	3
	.set	.LANCHOR177,. + 0
	.type	__func__.7260, %object
	.size	__func__.7260, 29
__func__.7260:
	.string	"flash_start_3d_mlc_page_prog"
	.section	.rodata.__func__.7278,"a",@progbits
	.align	3
	.set	.LANCHOR178,. + 0
	.type	__func__.7278, %object
	.size	__func__.7278, 22
__func__.7278:
	.string	"flash_start_page_prog"
	.section	.rodata.__func__.7289,"a",@progbits
	.align	3
	.set	.LANCHOR34,. + 0
	.type	__func__.7289, %object
	.size	__func__.7289, 22
__func__.7289:
	.string	"flash_start_page_read"
	.section	.rodata.__func__.7302,"a",@progbits
	.align	3
	.set	.LANCHOR179,. + 0
	.type	__func__.7302, %object
	.size	__func__.7302, 31
__func__.7302:
	.string	"flash_complete_plane_page_read"
	.section	.rodata.__func__.7314,"a",@progbits
	.align	3
	.set	.LANCHOR46,. + 0
	.type	__func__.7314, %object
	.size	__func__.7314, 23
__func__.7314:
	.string	"flash_start_plane_read"
	.section	.rodata.__func__.7327,"a",@progbits
	.align	3
	.set	.LANCHOR180,. + 0
	.type	__func__.7327, %object
	.size	__func__.7327, 25
__func__.7327:
	.string	"flash_complete_page_read"
	.section	.rodata.__func__.7742,"a",@progbits
	.align	3
	.set	.LANCHOR144,. + 0
	.type	__func__.7742, %object
	.size	__func__.7742, 20
__func__.7742:
	.string	"flash_die_info_init"
	.section	.rodata.__func__.7753,"a",@progbits
	.align	3
	.set	.LANCHOR20,. + 0
	.type	__func__.7753, %object
	.size	__func__.7753, 22
__func__.7753:
	.string	"nand_flash_print_info"
	.section	.rodata.__func__.7802,"a",@progbits
	.align	3
	.set	.LANCHOR212,. + 0
	.type	__func__.7802, %object
	.size	__func__.7802, 16
__func__.7802:
	.string	"nand_flash_init"
	.section	.rodata.__func__.7825,"a",@progbits
	.align	3
	.set	.LANCHOR156,. + 0
	.type	__func__.7825, %object
	.size	__func__.7825, 11
__func__.7825:
	.string	"nandc_init"
	.section	.rodata.__func__.7990,"a",@progbits
	.align	3
	.set	.LANCHOR58,. + 0
	.type	__func__.7990, %object
	.size	__func__.7990, 13
__func__.7990:
	.string	"buf_add_tail"
	.section	.rodata.__func__.8003,"a",@progbits
	.align	3
	.set	.LANCHOR60,. + 0
	.type	__func__.8003, %object
	.size	__func__.8003, 10
__func__.8003:
	.string	"buf_alloc"
	.section	.rodata.__func__.8017,"a",@progbits
	.align	3
	.set	.LANCHOR61,. + 0
	.type	__func__.8017, %object
	.size	__func__.8017, 16
__func__.8017:
	.string	"buf_remove_free"
	.section	.rodata.__func__.8038,"a",@progbits
	.align	3
	.set	.LANCHOR211,. + 0
	.type	__func__.8038, %object
	.size	__func__.8038, 20
__func__.8038:
	.string	"flash_info_blk_init"
	.section	.rodata.__func__.8053,"a",@progbits
	.align	3
	.set	.LANCHOR155,. + 0
	.type	__func__.8053, %object
	.size	__func__.8053, 21
__func__.8053:
	.string	"flash_info_data_init"
	.section	.rodata.__func__.8075,"a",@progbits
	.align	3
	.set	.LANCHOR208,. + 0
	.type	__func__.8075, %object
	.size	__func__.8075, 17
__func__.8075:
	.string	"flash_info_flush"
	.section	.rodata.__func__.8151,"a",@progbits
	.align	3
	.set	.LANCHOR148,. + 0
	.type	__func__.8151, %object
	.size	__func__.8151, 17
__func__.8151:
	.string	"lpa_rebuild_hash"
	.section	.rodata.__func__.8198,"a",@progbits
	.align	3
	.set	.LANCHOR235,. + 0
	.type	__func__.8198, %object
	.size	__func__.8198, 17
__func__.8198:
	.string	"ftl_write_commit"
	.section	.rodata.__func__.8216,"a",@progbits
	.align	3
	.set	.LANCHOR67,. + 0
	.type	__func__.8216, %object
	.size	__func__.8216, 14
__func__.8216:
	.string	"ftl_write_buf"
	.section	.rodata.__func__.8258,"a",@progbits
	.align	3
	.set	.LANCHOR70,. + 0
	.type	__func__.8258, %object
	.size	__func__.8258, 18
__func__.8258:
	.string	"zftl_add_read_buf"
	.section	.rodata.__func__.8291,"a",@progbits
	.align	3
	.set	.LANCHOR233,. + 0
	.type	__func__.8291, %object
	.size	__func__.8291, 10
__func__.8291:
	.string	"zftl_read"
	.section	.rodata.__func__.8323,"a",@progbits
	.align	3
	.set	.LANCHOR242,. + 0
	.type	__func__.8323, %object
	.size	__func__.8323, 13
__func__.8323:
	.string	"_ftl_discard"
	.section	.rodata.__func__.8469,"a",@progbits
	.align	3
	.set	.LANCHOR225,. + 0
	.type	__func__.8469, %object
	.size	__func__.8469, 12
__func__.8469:
	.string	"gc_recovery"
	.section	.rodata.__func__.8479,"a",@progbits
	.align	3
	.set	.LANCHOR77,. + 0
	.type	__func__.8479, %object
	.size	__func__.8479, 12
__func__.8479:
	.string	"gc_add_sblk"
	.section	.rodata.__func__.8526,"a",@progbits
	.align	3
	.set	.LANCHOR187,. + 0
	.type	__func__.8526, %object
	.size	__func__.8526, 21
__func__.8526:
	.string	"gc_check_data_one_wl"
	.section	.rodata.__func__.8558,"a",@progbits
	.align	3
	.set	.LANCHOR229,. + 0
	.type	__func__.8558, %object
	.size	__func__.8558, 22
__func__.8558:
	.string	"gc_update_l2p_map_new"
	.section	.rodata.__func__.8571,"a",@progbits
	.align	3
	.set	.LANCHOR83,. + 0
	.type	__func__.8571, %object
	.size	__func__.8571, 19
__func__.8571:
	.string	"gc_write_completed"
	.section	.rodata.__func__.8601,"a",@progbits
	.align	3
	.set	.LANCHOR237,. + 0
	.type	__func__.8601, %object
	.size	__func__.8601, 16
__func__.8601:
	.string	"gc_do_copy_back"
	.section	.rodata.__func__.8628,"a",@progbits
	.align	3
	.set	.LANCHOR133,. + 0
	.type	__func__.8628, %object
	.size	__func__.8628, 16
__func__.8628:
	.string	"gc_free_src_blk"
	.section	.rodata.__func__.8672,"a",@progbits
	.align	3
	.set	.LANCHOR230,. + 0
	.type	__func__.8672, %object
	.size	__func__.8672, 16
__func__.8672:
	.string	"gc_scan_src_blk"
	.section	.rodata.__func__.8733,"a",@progbits
	.align	3
	.set	.LANCHOR231,. + 0
	.type	__func__.8733, %object
	.size	__func__.8733, 20
__func__.8733:
	.string	"gc_scan_static_data"
	.section	.rodata.__func__.8827,"a",@progbits
	.align	3
	.set	.LANCHOR240,. + 0
	.type	__func__.8827, %object
	.size	__func__.8827, 11
__func__.8827:
	.string	"zftl_do_gc"
	.section	.rodata.__func__.8922,"a",@progbits
	.align	3
	.set	.LANCHOR5,. + 0
	.type	__func__.8922, %object
	.size	__func__.8922, 18
__func__.8922:
	.string	"_list_remove_node"
	.section	.rodata.__func__.8947,"a",@progbits
	.align	3
	.set	.LANCHOR13,. + 0
	.type	__func__.8947, %object
	.size	__func__.8947, 23
__func__.8947:
	.string	"_list_update_data_list"
	.section	.rodata.__func__.9022,"a",@progbits
	.align	3
	.set	.LANCHOR152,. + 0
	.type	__func__.9022, %object
	.size	__func__.9022, 20
__func__.9022:
	.string	"zftl_sblk_list_init"
	.section	.rodata.__func__.9056,"a",@progbits
	.align	3
	.set	.LANCHOR195,. + 0
	.type	__func__.9056, %object
	.size	__func__.9056, 15
__func__.9056:
	.string	"ftl_info_flush"
	.section	.rodata.__func__.9091,"a",@progbits
	.align	3
	.set	.LANCHOR116,. + 0
	.type	__func__.9091, %object
	.size	__func__.9091, 15
__func__.9091:
	.string	"ftl_alloc_sblk"
	.section	.rodata.__func__.9132,"a",@progbits
	.align	3
	.set	.LANCHOR119,. + 0
	.type	__func__.9132, %object
	.size	__func__.9132, 18
__func__.9132:
	.string	"ftl_alloc_sys_blk"
	.section	.rodata.__func__.9142,"a",@progbits
	.align	3
	.set	.LANCHOR120,. + 0
	.type	__func__.9142, %object
	.size	__func__.9142, 17
__func__.9142:
	.string	"ftl_free_sys_blk"
	.section	.rodata.__func__.9177,"a",@progbits
	.align	3
	.set	.LANCHOR232,. + 0
	.type	__func__.9177, %object
	.size	__func__.9177, 14
__func__.9177:
	.string	"ftl_sblk_dump"
	.section	.rodata.__func__.9201,"a",@progbits
	.align	3
	.set	.LANCHOR217,. + 0
	.type	__func__.9201, %object
	.size	__func__.9201, 16
__func__.9201:
	.string	"ftl_sysblk_dump"
	.section	.rodata.__func__.9226,"a",@progbits
	.align	3
	.set	.LANCHOR218,. + 0
	.type	__func__.9226, %object
	.size	__func__.9226, 23
__func__.9226:
	.string	"ftl_open_sblk_recovery"
	.section	.rodata.__func__.9259,"a",@progbits
	.align	3
	.set	.LANCHOR121,. + 0
	.type	__func__.9259, %object
	.size	__func__.9259, 23
__func__.9259:
	.string	"ftl_get_ppa_from_index"
	.section	.rodata.__func__.9280,"a",@progbits
	.align	3
	.set	.LANCHOR234,. + 0
	.type	__func__.9280, %object
	.size	__func__.9280, 19
__func__.9280:
	.string	"ftl_update_l2p_map"
	.section	.rodata.__func__.9299,"a",@progbits
	.align	3
	.set	.LANCHOR125,. + 0
	.type	__func__.9299, %object
	.size	__func__.9299, 22
__func__.9299:
	.string	"ftl_get_new_free_page"
	.section	.rodata.__func__.9310,"a",@progbits
	.align	3
	.set	.LANCHOR126,. + 0
	.type	__func__.9310, %object
	.size	__func__.9310, 22
__func__.9310:
	.string	"ftl_ext_alloc_new_blk"
	.section	.rodata.__func__.9336,"a",@progbits
	.align	3
	.set	.LANCHOR200,. + 0
	.type	__func__.9336, %object
	.size	__func__.9336, 19
__func__.9336:
	.string	"ftl_ext_info_flush"
	.section	.rodata.__func__.9348,"a",@progbits
	.align	3
	.set	.LANCHOR201,. + 0
	.type	__func__.9348, %object
	.size	__func__.9348, 18
__func__.9348:
	.string	"ftl_ext_info_init"
	.section	.rodata.__func__.9387,"a",@progbits
	.align	3
	.set	.LANCHOR202,. + 0
	.type	__func__.9387, %object
	.size	__func__.9387, 25
__func__.9387:
	.string	"ftl_low_format_data_init"
	.section	.rodata.__func__.9402,"a",@progbits
	.align	3
	.set	.LANCHOR204,. + 0
	.type	__func__.9402, %object
	.size	__func__.9402, 15
__func__.9402:
	.string	"ftl_low_format"
	.section	.rodata.__func__.9450,"a",@progbits
	.align	3
	.set	.LANCHOR191,. + 0
	.type	__func__.9450, %object
	.size	__func__.9450, 14
__func__.9450:
	.string	"ftl_prog_page"
	.section	.rodata.__func__.9569,"a",@progbits
	.align	3
	.set	.LANCHOR181,. + 0
	.type	__func__.9569, %object
	.size	__func__.9569, 31
__func__.9569:
	.string	"queue_wait_first_req_completed"
	.section	.rodata.__func__.9623,"a",@progbits
	.align	3
	.set	.LANCHOR182,. + 0
	.type	__func__.9623, %object
	.size	__func__.9623, 15
__func__.9623:
	.string	"sblk_prog_page"
	.section	.rodata.__func__.9650,"a",@progbits
	.align	3
	.set	.LANCHOR186,. + 0
	.type	__func__.9650, %object
	.size	__func__.9650, 15
__func__.9650:
	.string	"sblk_read_page"
	.section	.rodata.__func__.9720,"a",@progbits
	.align	3
	.set	.LANCHOR220,. + 0
	.type	__func__.9720, %object
	.size	__func__.9720, 16
__func__.9720:
	.string	"load_l2p_region"
	.section	.rodata.__func__.9736,"a",@progbits
	.align	3
	.set	.LANCHOR154,. + 0
	.type	__func__.9736, %object
	.size	__func__.9736, 13
__func__.9736:
	.string	"pm_free_sblk"
	.section	.rodata.__func__.9760,"a",@progbits
	.align	3
	.set	.LANCHOR222,. + 0
	.type	__func__.9760, %object
	.size	__func__.9760, 6
__func__.9760:
	.string	"pm_gc"
	.section	.rodata.__func__.9776,"a",@progbits
	.align	3
	.set	.LANCHOR135,. + 0
	.type	__func__.9776, %object
	.size	__func__.9776, 17
__func__.9776:
	.string	"pm_alloc_new_blk"
	.section	.rodata.__func__.9786,"a",@progbits
	.align	3
	.set	.LANCHOR205,. + 0
	.type	__func__.9786, %object
	.size	__func__.9786, 14
__func__.9786:
	.string	"pm_write_page"
	.section	.rodata.__func__.9804,"a",@progbits
	.align	3
	.set	.LANCHOR138,. + 0
	.type	__func__.9804, %object
	.size	__func__.9804, 21
__func__.9804:
	.string	"pm_select_ram_region"
	.section	.rodata._list_remove_node.str1.1,"aMS",@progbits,1
.LC0:
	.string	"\n!!!!! error @ func:%s - line:%d\n"
	.section	.rodata.dump_buf_info.str1.1,"aMS",@progbits,1
.LC41:
	.string	"sblk_queue_head = %d\n"
.LC42:
	.string	"sblk_read_completed_queue_head = %d\n"
.LC43:
	.string	"sblk_gc_write_completed_queue_head = %d\n"
.LC44:
	.string	"sblk_write_completed_queue_head = %d\n"
.LC45:
	.string	"p_free_buf_head = %d\n"
.LC46:
	.string	"free_buf_count = %d\n"
.LC47:
	.string	"buf = %d, next=%d, flag=%d gc_write_flag=%d, lun_state=%d, op_status = %d lpa=%x, ppa=%x\n"
	.section	.rodata.dump_pm_blk.str1.1,"aMS",@progbits,1
.LC237:
	.string	"pm l2p:"
.LC238:
	.string	"pm blk:"
	.section	.rodata.dump_sblk_queue.str1.1,"aMS",@progbits,1
.LC73:
	.string	"dump_sblk_queue: %d\n"
.LC74:
	.string	"buf id= %d state = %d ppa = %x\n"
	.section	.rodata.flash_complete_page_read.str1.1,"aMS",@progbits,1
.LC133:
	.string	"flash_complete_page_read %x %x error_ecc %d %d\n"
	.section	.rodata.flash_ddr_tuning_read.str1.1,"aMS",@progbits,1
.LC119:
	.string	"%d flash_ddr_tuning_read %x ecc=%d\n"
.LC120:
	.string	"sync para %d\n"
.LC121:
	.string	"DDR mode Read error %x %x\n"
.LC122:
	.string	"SDR mode Read %x %x ecc:%x\n"
	.section	.rodata.flash_dual_page_prog.str1.1,"aMS",@progbits,1
.LC127:
	.string	"flash_prog_page %x %x %x\n"
	.section	.rodata.flash_erase_all.str1.1,"aMS",@progbits,1
.LC35:
	.string	"erase done: %x\n"
	.section	.rodata.flash_erase_block_en.str1.1,"aMS",@progbits,1
.LC33:
	.string	"flash_erase_block %x %x %x\n"
.LC34:
	.string	"flash_erase_block %d block = %x status = %x\n"
	.section	.rodata.flash_erase_duplane_block.str1.1,"aMS",@progbits,1
.LC31:
	.string	"flash_erase_duplane_block %x %x %x\n"
.LC32:
	.string	"flash_erase_duplane_block pageadd = %x status = %x\n"
	.section	.rodata.flash_get_last_written_page.str1.1,"aMS",@progbits,1
.LC125:
	.string	"flash_get_last_written_page: %x %x %x\n"
	.section	.rodata.flash_info_blk_init.str1.1,"aMS",@progbits,1
.LC169:
	.string	"...%d @ %s %d %p\n"
.LC170:
	.string	"no sys info %x\n"
	.section	.rodata.flash_info_data_init.str1.1,"aMS",@progbits,1
.LC91:
	.string	"...%d @ %s\n"
	.section	.rodata.flash_info_flush.str1.1,"aMS",@progbits,1
.LC166:
	.string	"finfo:"
.LC167:
	.string	"flash_info_flush id = %x, page = %x\n"
.LC168:
	.string	"sys_info_flush error:%x\n"
	.section	.rodata.flash_mask_bad_block.str1.1,"aMS",@progbits,1
.LC48:
	.string	"flash_mask_bad_block %d %d\n"
	.section	.rodata.flash_prog_page.str1.1,"aMS",@progbits,1
.LC126:
	.string	"flash_prog_page page_addr = %x status = %x\n"
	.section	.rodata.flash_prog_page_en.str1.1,"aMS",@progbits,1
.LC141:
	.string	"flash_prog_page_en:%x %x %x\n"
.LC142:
	.string	"w d:"
.LC143:
	.string	"w s:"
.LC144:
	.string	"spare"
.LC145:
	.string	"data"
.LC146:
	.string	"write error: %x\n"
	.section	.rodata.flash_read_id.str1.1,"aMS",@progbits,1
.LC38:
	.string	"No.%d FLASH ID:%x %x %x %x %x %x\n"
	.section	.rodata.flash_read_otp_data.str1.1,"aMS",@progbits,1
.LC39:
	.string	"otp:%x %x %x %x\n"
	.section	.rodata.flash_read_page_en.str1.1,"aMS",@progbits,1
.LC123:
	.string	"flash_read_page_en %x %x %x %x\n"
.LC124:
	.string	"flash_read_page_en %x %x error_ecc %d %d\n"
	.section	.rodata.flash_set_interface_mode.str1.1,"aMS",@progbits,1
.LC36:
	.string	"nand sdr mode %x\n"
.LC37:
	.string	"nand ddr mode %x\n"
	.section	.rodata.ftl_alloc_new_data_sblk.str1.1,"aMS",@progbits,1
.LC228:
	.string	"error gc_add_sblk: %x\n"
	.section	.rodata.ftl_dump_write_open_sblk.str1.1,"aMS",@progbits,1
.LC160:
	.string	"ftl_sblk_dump_write = %x %d %d %d %d\n"
.LC161:
	.string	"blk= %x, page=%x, ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC162:
	.string	"ftl_sblk_dump_write2 = %x %d %d %d\n"
.LC163:
	.string	"ftl_sblk_dump_write = %x %x\n"
.LC164:
	.string	"ftl_sblk_dump_write done = %x\n"
	.section	.rodata.ftl_ext_info_init.str1.1,"aMS",@progbits,1
.LC153:
	.string	"%s %d %d %x %x\n"
.LC154:
	.string	"ext info hash %x error\n"
.LC155:
	.string	"%s %x %x %x\n"
	.section	.rodata.ftl_free_sblk.str1.1,"aMS",@progbits,1
.LC70:
	.string	"swl_slc_free_mini_ec_blk sblk %x\n"
	.section	.rodata.ftl_info_blk_init.str1.1,"aMS",@progbits,1
.LC149:
	.string	"%d %x @%d %x\n"
.LC150:
	.string	"ftl_info_blk_init %d %d %x\n"
.LC151:
	.string	"ftl info hash %x error\n"
.LC152:
	.string	"ink flag: %x\n"
	.section	.rodata.ftl_info_flush.str1.1,"aMS",@progbits,1
.LC148:
	.string	"g_ftl_info_blk blk = %x, page = %x version = %d\n"
	.section	.rodata.ftl_low_format.str1.1,"aMS",@progbits,1
.LC156:
	.string	"ftl_low_format %d\n"
.LC157:
	.string	"low format %d %d %d %d\n"
	.section	.rodata.ftl_mask_bad_block.str1.1,"aMS",@progbits,1
.LC68:
	.string	"mask bad block:cs %x %x block: %x %x\n"
	.section	.rodata.ftl_open_sblk_recovery.str1.1,"aMS",@progbits,1
.LC172:
	.string	"saved_active_page  = %x\n"
.LC173:
	.string	"saved_active_plane = %x\n"
.LC174:
	.string	"sblk = %x\n"
.LC175:
	.string	"phy_blk = %x %x\n"
.LC176:
	.string	"num_planes = %x\n"
.LC177:
	.string	"recovery blk=%x, page=%x, ppa = %x, status = %x, hash:%x\n"
.LC178:
	.string	"data:"
.LC179:
	.string	"sblk = %x, vpn0 = %d, vpn1 = %d\n"
.LC180:
	.string	"dump_write_lpa = %x %x %x %x\n"
.LC181:
	.string	"dump write new ppa = %x, last ppa = %x lpa = %x\n"
.LC182:
	.string	"dump write = %x %x %x\n"
.LC183:
	.string	"dump write hash update = %x %x %x\n"
	.section	.rodata.ftl_re_low_format.str1.1,"aMS",@progbits,1
.LC158:
	.string	"re low format %d\n"
	.section	.rodata.ftl_sblk_dump.str1.1,"aMS",@progbits,1
.LC216:
	.string	"ftl_sblk_dump = %x %d %d %d %d\n"
.LC217:
	.string	"ftl_sblk_dump = %x %x %x %x\n"
.LC218:
	.string	"page_addr = %x, lpa=%x vpn = %d\n"
.LC219:
	.string	"index= %x, lpa=%x\n"
.LC220:
	.string	"block = %x, vpn=%x check vpn = %x\n"
	.section	.rodata.ftl_sysblk_dump.str1.1,"aMS",@progbits,1
.LC171:
	.string	"l2p:"
	.section	.rodata.ftl_test_block.str1.1,"aMS",@progbits,1
.LC147:
	.string	"low format %d\n"
	.section	.rodata.ftl_update_l2p_map.str1.1,"aMS",@progbits,1
.LC224:
	.string	"ftl_update_l2p_map: %x %x %x\n"
.LC225:
	.string	"ftl_update_l2p_map"
.LC226:
	.string	"lpa_tbl:"
.LC227:
	.string	"sblk %x vpn: %d %d\n"
	.section	.rodata.ftl_vpn_decrement.str1.1,"aMS",@progbits,1
.LC65:
	.string	"ftl_vpn_decrement %x = %d, %d\n"
	.section	.rodata.ftl_write_commit.str1.1,"aMS",@progbits,1
.LC229:
	.string	"%d read error: ppa:%x, lpa:%x, status:%x\n"
	.section	.rodata.ftl_write_completed.str1.1,"aMS",@progbits,1
.LC66:
	.string	"ftl prog error =%x, lpa = %x, ppa= %x\n"
.LC67:
	.string	"ftl re prog: lpa = %x, ppa= %x\n"
	.section	.rodata.gc_add_sblk.str1.1,"aMS",@progbits,1
.LC49:
	.string	"gc_add_sblk = %d, %d, %d, %d, %d, %d, %d\n"
.LC50:
	.string	"gc_add_sblk = %d, %d, %d\n"
.LC51:
	.string	"gc_add_sblk = %d, %d, %d,last update:%d, %d\n"
.LC52:
	.string	"gc_add_sblk = %d, %d, %d, %d, %d, %d\n"
	.section	.rodata.gc_check_data_one_wl.str1.1,"aMS",@progbits,1
.LC140:
	.string	"err: ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
	.section	.rodata.gc_do_copy_back.str1.1,"aMS",@progbits,1
.LC231:
	.string	"gc page in buf: lpa %x ppa = %x pageindex= %x\n"
.LC232:
	.string	"gc_do_copy_back: lpa %x des_ppa = %x %x gc_ppa= %x page_index= %d\n"
	.section	.rodata.gc_free_bad_sblk.str1.1,"aMS",@progbits,1
.LC69:
	.string	"gc_free_bad_sblk 0x%x\n"
	.section	.rodata.gc_free_src_blk.str1.1,"aMS",@progbits,1
.LC71:
	.string	"gc_free_src_blk = %x, vpn = %d\n"
.LC72:
	.string	"gc_free_src_blk %x, %d\n"
	.section	.rodata.gc_free_temp_buf.str1.1,"aMS",@progbits,1
.LC55:
	.string	"%d gc_free_temp_buf buf id= %x\n"
	.section	.rodata.gc_ink_check_sblk.str1.1,"aMS",@progbits,1
.LC165:
	.string	"%x: ink_scaned_blk_num %x\n"
	.section	.rodata.gc_mark_bad_ppa.str1.1,"aMS",@progbits,1
.LC53:
	.string	"gc_mark_bad_ppa %d %x %x\n"
	.section	.rodata.gc_recovery.str1.1,"aMS",@progbits,1
.LC193:
	.string	"ppa = %x, status = %x, data:%x %x %x %x, spare: %x %x %x %x\n"
.LC194:
	.string	"ppa = %x, status = %x, %x %x spare: %x %x %x %x\n"
.LC195:
	.string	"gc_recovery: %x vpn = %x\n"
	.section	.rodata.gc_scan_src_blk.str1.1,"aMS",@progbits,1
.LC213:
	.string	"gc_scan_src_blk = %x, vpn = %d\n"
.LC214:
	.string	"js hash error:%x %x %x\n"
.LC215:
	.string	"gc_scan_src_blk = %x, s vpn0 = %d, c vpn1 = %d\n"
	.section	.rodata.gc_search_src_blk.str1.1,"aMS",@progbits,1
.LC57:
	.string	"zftl_get_gc_node cache = %x index = %d vpn = %x\n"
.LC58:
	.string	"gc_search_src_blk mode = %x, src mode = %x, count= %d %d\n"
	.section	.rodata.gc_static_wearleveling.str1.1,"aMS",@progbits,1
.LC79:
	.string	"gc_static_wearleveling: min blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC80:
	.string	"gc_static_wearleveling: min slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC81:
	.string	"gc_static_wearleveling: min tlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC82:
	.string	"gc_static_wearleveling: max slc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC83:
	.string	"gc_static_wearleveling: max xlc blk: %x,sec=%d,xec = %d ,mode=%d, func=%x, bbt=%x vpn = %d\n"
.LC84:
	.string	"gc_static_wearleveling: slc blk: %x, tlc blk: %d avg slc ec: %d, avg tlc ec: %d \n"
.LC85:
	.string	"gc_static_wearleveling: min slc ec: %x, min tlc ec: %d max slc ec: %d, max tlc ec: %d; %d %d\n"
.LC86:
	.string	"swl add tlc gc = %x, %d, %d, %d, %d, %d\n"
.LC87:
	.string	"swl add slc gc  = %x, %d, %d, %d, %d, %d\n"
	.section	.rodata.gc_update_l2p_map_new.str1.1,"aMS",@progbits,1
.LC209:
	.string	"gc_update_l2p_map_new sblk %x\n"
.LC210:
	.string	"gc_update_l2p_map_new: %x %x %x\n"
.LC211:
	.string	"lpa: %x %x %x\n"
.LC212:
	.string	"gc_update_l2p_map_new: %x vpn = %x vpn1 = %x done\n"
	.section	.rodata.gc_write_completed.str1.1,"aMS",@progbits,1
.LC54:
	.string	"status: %x, ppa: %x\n"
	.section	.rodata.hynix_get_read_retry_default.str1.1,"aMS",@progbits,1
.LC99:
	.string	"otp error! %d"
.LC100:
	.string	"rr"
	.section	.rodata.hynix_read_retrial.str1.1,"aMS",@progbits,1
.LC118:
	.string	"hynix RR %d row=%x, count %d, status=%d\n"
	.section	.rodata.idb_write_data.str1.1,"aMS",@progbits,1
.LC129:
	.string	"1 write_idblock fix data %x %x %x\n"
.LC130:
	.string	"write_idblock check fail! %x\n"
.LC131:
	.string	"write_idblock fail! %x\n"
	.section	.rodata.load_l2p_region.str1.1,"aMS",@progbits,1
.LC184:
	.string	"region_id = %d, pm_max_region = %d\n"
.LC185:
	.string	"load_l2p_region no ppa = %x , %x, all setting 0xff....\n"
.LC186:
	.string	"load_l2p_region = %x,%x,%x, %x\n"
.LC187:
	.string	"pm_ppa:"
.LC188:
	.string	"spare:"
	.section	.rodata.lpa_rebuild_hash.str1.1,"aMS",@progbits,1
.LC78:
	.string	"%s %d %d\n"
	.section	.rodata.micron_read_retrial.str1.1,"aMS",@progbits,1
.LC109:
	.string	"MT %d row=%x,last status %d,status = %d\n"
.LC110:
	.string	"MT RR %d row=%x,count %d,status=%d\n"
	.section	.rodata.nand_flash_print_info.str1.1,"aMS",@progbits,1
.LC1:
	.string	"...%s enter...\n"
.LC2:
	.string	"No.0 FLASH ID: %x %x %x %x %x %x\n"
.LC3:
	.string	"DiePerChip: %x\n"
.LC4:
	.string	"SectPerPage: %x\n"
.LC5:
	.string	"PagePerBlk: %x\n"
.LC6:
	.string	"Cell: %x\n"
.LC7:
	.string	"PlanePerDie: %x\n"
.LC8:
	.string	"BlkPerPlane: %x\n"
.LC9:
	.string	"die gap: %x\n"
.LC10:
	.string	"lsbMode: %x\n"
.LC11:
	.string	"ReadRetryMode: %x\n"
.LC12:
	.string	"ecc: %x\n"
.LC13:
	.string	"idb ecc: %x\n"
.LC14:
	.string	"OptMode: %x\n"
.LC15:
	.string	"g_nand_max_die: %x\n"
.LC16:
	.string	"Cache read enable: %x\n"
.LC17:
	.string	"Cache random read enable: %x\n"
.LC18:
	.string	"Cache prog enable: %x\n"
.LC19:
	.string	"multi read enable: %x\n"
.LC20:
	.string	"multi prog enable: %x\n"
.LC21:
	.string	"interleave enable: %x\n"
.LC22:
	.string	"read retry enable: %x\n"
.LC23:
	.string	"randomizer enable: %x\n"
.LC24:
	.string	"SDR enable: %x\n"
.LC25:
	.string	"ONFI enable: %x\n"
.LC26:
	.string	"TOGGLE enable: %x\n"
.LC27:
	.string	"g_flash_slc_mode: %x %x\n"
.LC28:
	.string	"MultiPlaneProgCmd: %x %x\n"
.LC29:
	.string	"MultiPlaneReadCmd: %x %x\n"
.LC30:
	.string	"g_flash_toggle_mode_en: %x\n"
	.section	.rodata.nandc_init.str1.1,"aMS",@progbits,1
.LC92:
	.string	"...%s enter... %p\n"
.LC93:
	.string	"0:%x %x %x %x %x\n"
.LC94:
	.string	"g_nandc_ver...%d\n"
	.section	.rodata.nandc_xfer.str1.1,"aMS",@progbits,1
.LC106:
	.string	"dqs data abort %x\n"
.LC107:
	.string	"dqs data timeout %x\n"
.LC108:
	.string	"xfer error %x\n"
	.section	.rodata.nandc_xfer_done.str1.1,"aMS",@progbits,1
.LC101:
	.string	"flash_abort_clear = %d\n"
.LC102:
	.string	"%d mtrans_cnt = %d page_num = %d\n"
.LC103:
	.string	"%d flReg.d32=%x %x\n"
.LC104:
	.string	"nandc:"
.LC105:
	.string	"nandc_xfer_done read error %x\n"
	.section	.rodata.pm_alloc_new_blk.str1.1,"aMS",@progbits,1
.LC75:
	.string	"blk %x is bad block\n"
.LC76:
	.string	"pm_alloc_new_blk: %x %x %x %x\n"
	.section	.rodata.pm_free_sblk.str1.1,"aMS",@progbits,1
.LC89:
	.string	"GC PM block %x %x %x %d\n"
.LC90:
	.string	"ftl_free_no_use_map_blk %x %x %x %d\n"
	.section	.rodata.pm_init.str1.1,"aMS",@progbits,1
.LC189:
	.string	"pm_init posr %x %x %x\n"
.LC190:
	.string	"pm_init recovery %x %x %x\n"
.LC191:
	.string	"pm_init hash %x error\n"
	.section	.rodata.pm_log2phys.str1.1,"aMS",@progbits,1
.LC192:
	.string	"pm_log2phys  lpn = %d, max lpn = %d\n"
	.section	.rodata.pm_ppa_update_check.str1.1,"aMS",@progbits,1
.LC77:
	.string	"%s w error lpn = %x, max ppa = %d\n"
	.section	.rodata.pm_write_page.str1.1,"aMS",@progbits,1
.LC159:
	.string	"pm_write_page write error: %x\n"
	.section	.rodata.print_gc_debug_info.str1.1,"aMS",@progbits,1
.LC56:
	.string	"gc: b:%x,p:%x,i:%x; free buf=%d %d free slc th: %d\n"
	.section	.rodata.print_list_info.str1.1,"aMS",@progbits,1
.LC63:
	.string	"list count:%p %d\n"
.LC64:
	.string	"%d: node:%x %x %x %x, %d %d %d %d %d\n"
	.section	.rodata.queue_wait_first_req_completed.str1.1,"aMS",@progbits,1
.LC134:
	.string	"read: %x %x %x %x\n"
.LC135:
	.string	"0set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC136:
	.string	"prog end %x %x error_ecc %d %d\n"
.LC137:
	.string	"1set buf %d,status = %x, ppa = %x lun state = %d\n"
.LC138:
	.string	"dp prog end %x %x error_ecc %d %d\n"
	.section	.rodata.random_seed,"a",@progbits
	.align	3
	.set	.LANCHOR54,. + 0
	.type	random_seed, %object
	.size	random_seed, 256
random_seed:
	.hword	22378
	.hword	1512
	.hword	25245
	.hword	17827
	.hword	25756
	.hword	19440
	.hword	9026
	.hword	10030
	.hword	29528
	.hword	20467
	.hword	29676
	.hword	24432
	.hword	31328
	.hword	6872
	.hword	13426
	.hword	13842
	.hword	8783
	.hword	1108
	.hword	782
	.hword	28837
	.hword	30729
	.hword	9505
	.hword	18676
	.hword	23085
	.hword	18730
	.hword	1085
	.hword	32609
	.hword	14697
	.hword	20858
	.hword	15170
	.hword	30365
	.hword	1607
	.hword	32298
	.hword	4995
	.hword	18905
	.hword	1976
	.hword	9592
	.hword	20204
	.hword	17443
	.hword	13615
	.hword	23330
	.hword	29369
	.hword	13947
	.hword	9398
	.hword	32398
	.hword	8984
	.hword	27600
	.hword	21785
	.hword	6019
	.hword	6311
	.hword	31598
	.hword	30210
	.hword	19327
	.hword	13896
	.hword	11347
	.hword	27545
	.hword	3107
	.hword	26575
	.hword	32270
	.hword	19852
	.hword	20601
	.hword	8349
	.hword	9290
	.hword	29819
	.hword	13579
	.hword	3661
	.hword	28676
	.hword	27331
	.hword	32574
	.hword	8693
	.hword	31253
	.hword	9081
	.hword	5399
	.hword	6842
	.hword	20087
	.hword	5537
	.hword	1274
	.hword	11617
	.hword	9530
	.hword	4866
	.hword	8035
	.hword	23219
	.hword	1178
	.hword	23272
	.hword	7383
	.hword	18944
	.hword	12488
	.hword	12871
	.hword	29340
	.hword	20532
	.hword	11022
	.hword	22514
	.hword	228
	.hword	22363
	.hword	24978
	.hword	14584
	.hword	12138
	.hword	3092
	.hword	17916
	.hword	16863
	.hword	14554
	.hword	31457
	.hword	29474
	.hword	25311
	.hword	24121
	.hword	3684
	.hword	28037
	.hword	22865
	.hword	22839
	.hword	25217
	.hword	13217
	.hword	27186
	.hword	14938
	.hword	11180
	.hword	29754
	.hword	24180
	.hword	15150
	.hword	32455
	.hword	20434
	.hword	23848
	.hword	29983
	.hword	16120
	.hword	14769
	.hword	20041
	.hword	29803
	.hword	28406
	.hword	17598
	.hword	28087
	.section	.rodata.rk_ftl_init.str1.1,"aMS",@progbits,1
.LC208:
	.string	"zftl_init %x\n"
	.section	.rodata.rknand_print_hex.str1.1,"aMS",@progbits,1
.LC95:
	.string	"%s %p + 0x%x:"
.LC96:
	.string	"%x "
.LC97:
	.string	""
.LC98:
	.string	"%s\n"
	.section	.rodata.samsung_14nm_mlc_rr,"a",@progbits
	.align	3
	.set	.LANCHOR169,. + 0
	.type	samsung_14nm_mlc_rr, %object
	.size	samsung_14nm_mlc_rr, 104
samsung_14nm_mlc_rr:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-4
	.byte	3
	.byte	-4
	.byte	-6
	.byte	6
	.byte	0
	.byte	6
	.byte	-10
	.byte	-10
	.byte	4
	.byte	-10
	.byte	16
	.byte	12
	.byte	-4
	.byte	12
	.byte	8
	.byte	-16
	.byte	10
	.byte	-16
	.byte	24
	.byte	18
	.byte	-14
	.byte	18
	.byte	-4
	.byte	-22
	.byte	-16
	.byte	-22
	.byte	-8
	.byte	24
	.byte	-9
	.byte	24
	.byte	8
	.byte	-28
	.byte	-4
	.byte	-28
	.byte	16
	.byte	30
	.byte	10
	.byte	30
	.byte	10
	.byte	-34
	.byte	6
	.byte	-34
	.byte	0
	.byte	36
	.byte	-8
	.byte	36
	.byte	-8
	.byte	-40
	.byte	-2
	.byte	-40
	.byte	-20
	.byte	-46
	.byte	-4
	.byte	-46
	.byte	-30
	.byte	3
	.byte	0
	.byte	3
	.byte	-3
	.byte	-2
	.byte	-4
	.byte	-2
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	-10
	.byte	-6
	.byte	-8
	.byte	-6
	.byte	-14
	.byte	-9
	.byte	-8
	.byte	-9
	.byte	-18
	.byte	-52
	.byte	22
	.byte	-52
	.byte	10
	.byte	42
	.byte	4
	.byte	42
	.byte	4
	.byte	48
	.byte	-9
	.byte	48
	.byte	4
	.byte	-58
	.byte	12
	.byte	-58
	.byte	0
	.byte	-64
	.byte	-24
	.byte	-64
	.byte	-6
	.byte	9
	.byte	18
	.byte	9
	.byte	8
	.section	.rodata.samsung_14nm_slc_rr,"a",@progbits
	.align	3
	.set	.LANCHOR168,. + 0
	.type	samsung_14nm_slc_rr, %object
	.size	samsung_14nm_slc_rr, 26
samsung_14nm_slc_rr:
	.byte	0
	.byte	10
	.byte	-10
	.byte	20
	.byte	-20
	.byte	30
	.byte	-30
	.byte	40
	.byte	-40
	.byte	50
	.byte	-50
	.byte	60
	.byte	-60
	.byte	-70
	.byte	-80
	.byte	-90
	.byte	-100
	.byte	-110
	.byte	-120
	.byte	-9
	.byte	70
	.byte	80
	.byte	90
	.byte	-125
	.byte	-115
	.byte	100
	.section	.rodata.samsung_read_retrial.str1.1,"aMS",@progbits,1
.LC115:
	.string	"samsung SRR %d row=%x, status=%d\n"
.LC116:
	.string	"samsung TRR %d row=%x, status=%d\n"
.LC117:
	.string	"samsung RR %d row=%x,count %d,status=%d\n"
	.section	.rodata.sandisk_prog_test_bad_block.str1.1,"aMS",@progbits,1
.LC40:
	.string	"bad block test:%x %x\n"
	.section	.rodata.sblk_mlc_dump_prog.str1.1,"aMS",@progbits,1
.LC132:
	.string	"sblk_mlc_dump_prog wl_addr= %x ppa = %x ppa = %x\n"
	.section	.rodata.sblk_prog_page.str1.1,"aMS",@progbits,1
.LC139:
	.string	"sblk_prog_page ppa = %x, count = %d\n"
	.section	.rodata.toshiba_15ref_value,"a",@progbits
	.align	3
	.set	.LANCHOR14,. + 0
	.type	toshiba_15ref_value, %object
	.size	toshiba_15ref_value, 95
toshiba_15ref_value:
	.byte	4
	.byte	5
	.byte	6
	.byte	7
	.byte	13
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	2
	.byte	4
	.byte	2
	.byte	0
	.byte	0
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	0
	.byte	124
	.byte	0
	.byte	124
	.byte	124
	.byte	0
	.byte	122
	.byte	0
	.byte	122
	.byte	122
	.byte	0
	.byte	11
	.byte	126
	.byte	118
	.byte	116
	.byte	0
	.byte	120
	.byte	2
	.byte	120
	.byte	122
	.byte	0
	.byte	126
	.byte	4
	.byte	126
	.byte	122
	.byte	0
	.byte	16
	.byte	118
	.byte	114
	.byte	112
	.byte	0
	.byte	118
	.byte	4
	.byte	118
	.byte	120
	.byte	0
	.byte	4
	.byte	4
	.byte	4
	.byte	118
	.byte	0
	.byte	2
	.byte	0
	.byte	126
	.byte	124
	.byte	0
	.byte	6
	.byte	10
	.byte	6
	.byte	2
	.byte	0
	.byte	116
	.byte	124
	.byte	116
	.byte	118
	.byte	0
	.byte	4
	.byte	4
	.byte	124
	.byte	126
	.byte	0
	.byte	0
	.byte	124
	.byte	120
	.byte	120
	.byte	0
	.byte	124
	.byte	118
	.byte	116
	.byte	114
	.byte	0
	.section	.rodata.toshiba_3D_slc_value,"a",@progbits
	.align	3
	.set	.LANCHOR38,. + 0
	.type	toshiba_3D_slc_value, %object
	.size	toshiba_3D_slc_value, 11
toshiba_3D_slc_value:
	.byte	-117
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-24
	.byte	24
	.byte	-40
	.byte	40
	.byte	-56
	.byte	56
	.section	.rodata.toshiba_3D_tlc_value,"a",@progbits
	.align	3
	.set	.LANCHOR37,. + 0
	.type	toshiba_3D_tlc_value, %object
	.size	toshiba_3D_tlc_value, 399
toshiba_3D_tlc_value:
	.byte	-119
	.byte	-119
	.byte	-119
	.byte	-119
	.byte	-118
	.byte	-118
	.byte	-118
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	5
	.byte	-2
	.byte	-1
	.byte	0
	.byte	-3
	.byte	-2
	.byte	6
	.byte	-9
	.byte	-12
	.byte	-9
	.byte	-7
	.byte	-13
	.byte	-12
	.byte	-7
	.byte	-6
	.byte	-15
	.byte	-15
	.byte	-2
	.byte	-12
	.byte	-16
	.byte	-6
	.byte	-2
	.byte	-19
	.byte	-19
	.byte	-6
	.byte	-4
	.byte	-12
	.byte	-14
	.byte	-2
	.byte	-11
	.byte	-23
	.byte	-34
	.byte	-4
	.byte	-20
	.byte	-22
	.byte	-2
	.byte	-7
	.byte	-31
	.byte	-30
	.byte	-12
	.byte	-20
	.byte	-18
	.byte	2
	.byte	-15
	.byte	-19
	.byte	-36
	.byte	-12
	.byte	-28
	.byte	-34
	.byte	-6
	.byte	-15
	.byte	-11
	.byte	2
	.byte	-12
	.byte	-8
	.byte	-2
	.byte	2
	.byte	-3
	.byte	-7
	.byte	-10
	.byte	-4
	.byte	-8
	.byte	-6
	.byte	-6
	.byte	-11
	.byte	-27
	.byte	-38
	.byte	-16
	.byte	-12
	.byte	-2
	.byte	2
	.byte	-7
	.byte	-31
	.byte	-22
	.byte	-4
	.byte	-16
	.byte	-22
	.byte	-7
	.byte	-31
	.byte	-23
	.byte	-22
	.byte	-28
	.byte	-28
	.byte	-26
	.byte	2
	.byte	-7
	.byte	-11
	.byte	-14
	.byte	-8
	.byte	-12
	.byte	-10
	.byte	-10
	.byte	-27
	.byte	-25
	.byte	-22
	.byte	-20
	.byte	-28
	.byte	-22
	.byte	-7
	.byte	-23
	.byte	-29
	.byte	-34
	.byte	-24
	.byte	-32
	.byte	-22
	.byte	-10
	.byte	-11
	.byte	-29
	.byte	-18
	.byte	-12
	.byte	-24
	.byte	-22
	.byte	6
	.byte	1
	.byte	-3
	.byte	-6
	.byte	0
	.byte	-4
	.byte	-2
	.byte	10
	.byte	-3
	.byte	-7
	.byte	-6
	.byte	4
	.byte	-4
	.byte	-2
	.byte	-10
	.byte	-23
	.byte	-39
	.byte	-22
	.byte	-19
	.byte	-24
	.byte	-18
	.byte	-14
	.byte	-23
	.byte	-29
	.byte	-30
	.byte	-15
	.byte	-30
	.byte	-30
	.byte	-7
	.byte	-27
	.byte	-35
	.byte	-26
	.byte	-15
	.byte	-24
	.byte	-26
	.byte	6
	.byte	-11
	.byte	5
	.byte	-2
	.byte	-16
	.byte	-16
	.byte	-2
	.byte	-2
	.byte	-15
	.byte	-15
	.byte	-20
	.byte	-8
	.byte	-16
	.byte	-18
	.byte	6
	.byte	5
	.byte	-15
	.byte	-2
	.byte	-24
	.byte	-28
	.byte	-22
	.byte	10
	.byte	-15
	.byte	-3
	.byte	-30
	.byte	-8
	.byte	-24
	.byte	-30
	.byte	-10
	.byte	-27
	.byte	-19
	.byte	-30
	.byte	-12
	.byte	-16
	.byte	-10
	.byte	14
	.byte	-19
	.byte	-3
	.byte	-30
	.byte	4
	.byte	4
	.byte	6
	.byte	2
	.byte	1
	.byte	-3
	.byte	-10
	.byte	-8
	.byte	-4
	.byte	-6
	.byte	-2
	.byte	-15
	.byte	-11
	.byte	-26
	.byte	-8
	.byte	-20
	.byte	-30
	.byte	6
	.byte	-19
	.byte	-3
	.byte	-46
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	9
	.byte	5
	.byte	2
	.byte	4
	.byte	8
	.byte	6
	.byte	8
	.byte	9
	.byte	9
	.byte	6
	.byte	8
	.byte	8
	.byte	6
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.byte	-12
	.byte	-14
	.byte	-20
	.byte	-18
	.byte	-16
	.byte	-16
	.byte	-14
	.byte	-12
	.byte	-10
	.byte	-21
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-10
	.byte	-12
	.byte	-18
	.byte	-22
	.byte	-24
	.byte	-18
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-14
	.byte	-23
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-12
	.byte	-24
	.byte	-24
	.byte	-30
	.byte	-24
	.byte	-28
	.byte	-28
	.byte	-12
	.byte	-26
	.byte	-25
	.byte	-34
	.byte	-24
	.byte	-24
	.byte	-24
	.byte	-12
	.byte	-13
	.byte	-26
	.byte	-20
	.byte	-14
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-15
	.byte	-27
	.byte	-22
	.byte	-20
	.byte	-24
	.byte	-22
	.byte	-12
	.byte	-21
	.byte	-28
	.byte	-28
	.byte	-24
	.byte	-26
	.byte	-24
	.byte	20
	.byte	16
	.byte	6
	.byte	10
	.byte	16
	.byte	12
	.byte	12
	.byte	16
	.byte	16
	.byte	8
	.byte	8
	.byte	12
	.byte	12
	.byte	12
	.byte	18
	.byte	18
	.byte	10
	.byte	8
	.byte	14
	.byte	14
	.byte	14
	.byte	16
	.byte	14
	.byte	6
	.byte	6
	.byte	12
	.byte	14
	.byte	8
	.byte	20
	.byte	18
	.byte	8
	.byte	6
	.byte	14
	.byte	14
	.byte	10
	.byte	20
	.byte	20
	.byte	6
	.byte	10
	.byte	10
	.byte	12
	.byte	12
	.byte	10
	.byte	13
	.byte	5
	.byte	2
	.byte	14
	.byte	8
	.byte	6
	.byte	6
	.byte	13
	.byte	9
	.byte	4
	.byte	14
	.byte	10
	.byte	10
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.section	.rodata.toshiba_3d_read_retrial.str1.1,"aMS",@progbits,1
.LC111:
	.string	"toshiba SRR %d row=%x, status=%d\n"
.LC112:
	.string	"toshiba TRR %d row=%x, status=%d\n"
.LC113:
	.string	"toshiba RR %d row=%x,count %d,status=%d\n"
	.section	.rodata.toshiba_A19ref_value,"a",@progbits
	.align	3
	.set	.LANCHOR15,. + 0
	.type	toshiba_A19ref_value, %object
	.size	toshiba_A19ref_value, 45
toshiba_A19ref_value:
	.byte	4
	.byte	5
	.byte	6
	.byte	7
	.byte	13
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	4
	.byte	4
	.byte	124
	.byte	126
	.byte	0
	.byte	0
	.byte	124
	.byte	120
	.byte	120
	.byte	0
	.byte	124
	.byte	118
	.byte	116
	.byte	114
	.byte	0
	.byte	8
	.byte	8
	.byte	0
	.byte	0
	.byte	0
	.byte	11
	.byte	126
	.byte	118
	.byte	116
	.byte	0
	.byte	16
	.byte	118
	.byte	114
	.byte	112
	.byte	0
	.byte	2
	.byte	0
	.byte	126
	.byte	124
	.byte	0
	.section	.rodata.toshiba_ref_value,"a",@progbits
	.align	3
	.set	.LANCHOR17,. + 0
	.type	toshiba_ref_value, %object
	.size	toshiba_ref_value, 8
toshiba_ref_value:
	.byte	0
	.byte	4
	.byte	124
	.byte	120
	.byte	116
	.byte	8
	.byte	12
	.byte	112
	.section	.rodata.ymtc_3D_slc_value,"a",@progbits
	.align	3
	.set	.LANCHOR42,. + 0
	.type	ymtc_3D_slc_value, %object
	.size	ymtc_3D_slc_value, 10
ymtc_3D_slc_value:
	.byte	0
	.byte	-8
	.byte	8
	.byte	-16
	.byte	-20
	.byte	24
	.byte	-26
	.byte	40
	.byte	-12
	.byte	56
	.section	.rodata.ymtc_3D_tlc_value,"a",@progbits
	.align	3
	.set	.LANCHOR41,. + 0
	.type	ymtc_3D_tlc_value, %object
	.size	ymtc_3D_tlc_value, 357
ymtc_3D_tlc_value:
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-10
	.byte	-10
	.byte	-6
	.byte	-6
	.byte	-2
	.byte	2
	.byte	2
	.byte	-6
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-4
	.byte	-6
	.byte	-8
	.byte	6
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	0
	.byte	-2
	.byte	-2
	.byte	-2
	.byte	-4
	.byte	-4
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-11
	.byte	-2
	.byte	2
	.byte	4
	.byte	4
	.byte	6
	.byte	6
	.byte	6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-6
	.byte	-8
	.byte	-14
	.byte	-6
	.byte	-15
	.byte	-11
	.byte	2
	.byte	-12
	.byte	-8
	.byte	-2
	.byte	2
	.byte	-3
	.byte	-7
	.byte	-10
	.byte	-4
	.byte	-8
	.byte	-6
	.byte	-18
	.byte	-18
	.byte	-14
	.byte	-14
	.byte	-10
	.byte	-5
	.byte	-5
	.byte	-14
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-12
	.byte	-13
	.byte	-15
	.byte	-2
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-10
	.byte	-10
	.byte	-10
	.byte	-12
	.byte	-12
	.byte	-13
	.byte	-13
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-13
	.byte	-18
	.byte	-10
	.byte	-6
	.byte	-4
	.byte	-4
	.byte	-2
	.byte	-1
	.byte	-1
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-14
	.byte	-15
	.byte	-21
	.byte	-12
	.byte	-11
	.byte	-7
	.byte	-7
	.byte	-3
	.byte	1
	.byte	1
	.byte	-8
	.byte	-7
	.byte	-5
	.byte	-5
	.byte	-5
	.byte	-7
	.byte	-9
	.byte	4
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-1
	.byte	-4
	.byte	-3
	.byte	-3
	.byte	-5
	.byte	-5
	.byte	-7
	.byte	-7
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-12
	.byte	-4
	.byte	1
	.byte	3
	.byte	3
	.byte	5
	.byte	5
	.byte	5
	.byte	-8
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-7
	.byte	-9
	.byte	-15
	.byte	2
	.byte	-7
	.byte	-11
	.byte	-14
	.byte	-8
	.byte	-12
	.byte	-10
	.byte	6
	.byte	1
	.byte	-3
	.byte	-6
	.byte	0
	.byte	-4
	.byte	-2
	.byte	10
	.byte	-3
	.byte	-7
	.byte	-6
	.byte	4
	.byte	-4
	.byte	-2
	.byte	-10
	.byte	-23
	.byte	-39
	.byte	-22
	.byte	-19
	.byte	-24
	.byte	-18
	.byte	-7
	.byte	-27
	.byte	-35
	.byte	-26
	.byte	-15
	.byte	-24
	.byte	-26
	.byte	6
	.byte	-11
	.byte	5
	.byte	-2
	.byte	-16
	.byte	-16
	.byte	-2
	.byte	-2
	.byte	-15
	.byte	-15
	.byte	-20
	.byte	-8
	.byte	-16
	.byte	-18
	.byte	2
	.byte	1
	.byte	-3
	.byte	-10
	.byte	-8
	.byte	-4
	.byte	-6
	.byte	-2
	.byte	-15
	.byte	-11
	.byte	-26
	.byte	-8
	.byte	-20
	.byte	-30
	.byte	6
	.byte	-19
	.byte	-3
	.byte	-46
	.byte	0
	.byte	0
	.byte	2
	.byte	6
	.byte	9
	.byte	5
	.byte	2
	.byte	4
	.byte	8
	.byte	6
	.byte	8
	.byte	9
	.byte	9
	.byte	6
	.byte	8
	.byte	8
	.byte	6
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.byte	-12
	.byte	-14
	.byte	-20
	.byte	-18
	.byte	-16
	.byte	-16
	.byte	-14
	.byte	-12
	.byte	-10
	.byte	-21
	.byte	-14
	.byte	-12
	.byte	-12
	.byte	-10
	.byte	-12
	.byte	-18
	.byte	-22
	.byte	-24
	.byte	-18
	.byte	-18
	.byte	-18
	.byte	-12
	.byte	-14
	.byte	-23
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	-20
	.byte	16
	.byte	16
	.byte	8
	.byte	8
	.byte	12
	.byte	12
	.byte	12
	.byte	18
	.byte	18
	.byte	10
	.byte	8
	.byte	14
	.byte	14
	.byte	14
	.byte	16
	.byte	14
	.byte	6
	.byte	6
	.byte	12
	.byte	14
	.byte	8
	.byte	10
	.byte	13
	.byte	5
	.byte	2
	.byte	14
	.byte	8
	.byte	6
	.byte	6
	.byte	13
	.byte	9
	.byte	4
	.byte	14
	.byte	10
	.byte	10
	.byte	10
	.byte	13
	.byte	9
	.byte	6
	.byte	8
	.byte	12
	.byte	10
	.byte	2
	.byte	5
	.byte	1
	.byte	-2
	.byte	0
	.byte	0
	.byte	6
	.byte	12
	.byte	1
	.byte	13
	.byte	2
	.byte	12
	.byte	12
	.byte	14
	.section	.rodata.ymtc_3d_read_retrial.str1.1,"aMS",@progbits,1
.LC114:
	.string	"YMTC RR %d row=%x,count %d,status=%d\n"
	.section	.rodata.ymtc_flash_tlc_page_prog.str1.1,"aMS",@progbits,1
.LC128:
	.string	"ymtc_flash_tlc_page_prog page_addr = %x status = %x\n"
	.section	.rodata.zftl_discard.str1.1,"aMS",@progbits,1
.LC236:
	.string	"ftl_discard:(%x, %x, %x, %x)\n"
	.section	.rodata.zftl_do_gc.str1.1,"aMS",@progbits,1
.LC233:
	.string	"gc %d: %d %d %d %d %d %d %d\n"
.LC234:
	.string	"GC_STATE_SCAN_ALL_PAGE = %x, vpn0 = %d, vpn1 = %d\n"
.LC235:
	.string	"gc free %x, %d\n"
	.section	.rodata.zftl_gc_get_free_sblk.str1.1,"aMS",@progbits,1
.LC59:
	.string	"swl_tlc_free_mini_ec_blk alloc sblk %x\n"
.LC60:
	.string	"zftl_get_free_sblk %x %d, %p %d %d\n"
.LC61:
	.string	"zftl_gc_get_free_sblk %x %x %x, %d %d %d\n"
	.section	.rodata.zftl_get_free_sblk.str1.1,"aMS",@progbits,1
.LC62:
	.string	"swl_slc_free_mini_ec_blk alloc sblk %x\n"
	.section	.rodata.zftl_init.str1.1,"aMS",@progbits,1
.LC196:
	.string	"FTL version: 6.0.24 20210615"
.LC197:
	.string	"_c_user_data_density := %d\n"
.LC198:
	.string	"_c_totle_phy_density := %d\n"
.LC199:
	.string	"_c_totle_log_page := %d\n"
.LC200:
	.string	"_c_totle_data_density := %d\n"
.LC201:
	.string	"_c_ftl_pm_page_num := %d\n"
.LC202:
	.string	"_c_ftl_byte_pre_page := %d\n"
.LC203:
	.string	"_c_max_pm_sblk := %d\n"
.LC204:
	.string	"_min_slc_super_block := %d\n"
.LC205:
	.string	"_max_xlc_super_block := %d\n"
.LC206:
	.string	"gp_ftl_ext_info %p %p %p\n"
.LC207:
	.string	"flash info size: %d %d %d\n"
	.section	.rodata.zftl_read.str1.1,"aMS",@progbits,1
.LC221:
	.string	"ftl_read %x %x %x\n"
.LC222:
	.string	"ftl_read refresh =%x, lpa = %x, ppa= %x\n"
.LC223:
	.string	"id=%d, status = %x, lpa = %x, ppa = %x spare = %x %x %x %x\n"
	.section	.rodata.zftl_sblk_list_init.str1.1,"aMS",@progbits,1
.LC88:
	.string	"free blk vpn error: %x %x\n"
	.section	.rodata.zftl_write.str1.1,"aMS",@progbits,1
.LC230:
	.string	"ftlwrite %x %x %x %x\n"
